Я пользуюсь третьей стороной. Я получаю отсюда: https://github.com/andersao/l5-repository
Моя функция в хранилище файлов выглядит следующим образом:
public function displayList($year, $id = NULL)
{
$clauses = ['year' => $year];
if(isset($id)) {
$clauses = array_merge($clauses, ['id' => $id]);
}
$query = Self::orderBy('programcode')
->orderBy('accountcode')
->findWhere($clauses)
->paginate(1);
return $query;
}
Когда выполняется, существует такая ошибка: Method paginate does not exist.
,
Я пытаюсь удалить ->findWhere($clauses)
, Оно работает. Нет ошибок.
Findwhere и paginate, видимо, не могут работать одновременно
Есть ли решение этой проблемы?
Это потому что ->findWhere(...)
заканчивает запрос с ->get()
и возвращает результаты (красноречивый сбор).
То, что вы пытаетесь сделать, это вызвать ->paginate(...)
метод на красноречивая коллекция. Это на самом деле метод на построитель запросов.
Решение
$query = Self::orderBy('programcode')
->orderBy('accountcode')
->applyConditions($clauses)
->paginate(1);
редактировать
Хорошо, итак ->applyCondtions()
не возвращает объект, поэтому вы не можете связать методы с ним. Попробуй это:
$query = Self::orderBy('programcode')
->orderBy('accountcode');
$query->applyConditions($clauses);
$query = $query->paginate(1);
Как это:
$list = $this->repository->scopeQuery(function($query) use ($filterColumns) {
return $query->where($filterColumns)->orderBy('created_at', 'DESC');
});
$list->paginate(10);