Отфильтруйте с помощью Where и Order с помощью Orderby в одной строке - PullRequest
0 голосов
/ 14 марта 2019

Я хочу передать массив, содержащий все ученики, упорядоченные по специализации, начальный год и имя.

$apprentices = Apprentice::orderBy('specialization', 'asc')->orderBy('startYear', 'asc')->orderBy('name', 'asc')->get();

Это прекрасно работает, но теперь я хочу только вернуть наборы данных из учеников, которая началась 4 года или менее назад.Я попробовал это:

        $apprentices = Apprentice::orderBy('specialization', 'asc')->orderBy('startYear', 'asc')->orderBy('name', 'asc')->get()->where('startYear' <= date("Y") - 4);

, но это ничего не возвращает.

Это просто небольшая синтаксическая ошибка или моя идея с самого начала неверна?Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

Ваше предложение where сформировано неправильно, и вам нужно переместить get в конец:

$apprentices = Apprentice::orderBy('specialization', 'asc')->orderBy('startYear', 'asc')->orderBy('name', 'asc')->where('startYear', '<=', date("Y") - 4)->get();

См. Руководство для , где предложения .

0 голосов
/ 14 марта 2019

Вы пробовали:

$apprentices = Apprentice::whereYear('startYear', '<=', \Carbon\Carbon::now()->subYears(4))->orderBy('specialization', 'asc')->orderBy('startYear', 'asc')->orderBy('name', 'asc')->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...