Сочетание selectRaw и paginate в Laravel - PullRequest
1 голос
/ 14 июня 2019

Я пытаюсь вернуть постраничные результаты в зависимости от возраста пользователей. Броски Laravel и ошибка при использовании selectRaw() в сочетании с paginate().

Вот ошибка:

Подсветка \ База данных \ QueryException: SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец «age_months» в «имеющем предложении» (SQL: выберите количество (*) как совокупность из ads, имеющего age_months <= 3) </p>

Вот код:

Ad::selectRaw('TIMESTAMPDIFF(YEAR, DATE(ads.birth_date), CURDATE()) AS age_months')
    ->having(\DB::raw('age_months'), '<=', $request->max_age_months)
    ->paginate();

Как видите, count(*) переопределяет selectRaw(), что делает его устаревшим. Я попытался заменить paginate() на get(), и это работает, и производит этот запрос:

выберите TIMESTAMPDIFF (ГОД, ДАТА (ads.birth_date), CURDATE ()) AS age_months из ads, имеющего age_months <=? </p>

Это ошибка или я что-то не так делаю?

1 Ответ

0 голосов
/ 14 июня 2019

Оказывается, я все усложнял. Я решил это, просто используя Laravel's whereDate().

Ad::whereDate('birth_date', '>=', now()->subMonths($request->max_age_months))
    ->paginate();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...