Как отфильтровать коллекцию Laravel - PullRequest
0 голосов
/ 25 августа 2018

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

$groups = V_Member::where('groupadmin', '=', Auth::id())->get();    
$members = V_Member::where([['idgroup', $groupid],['groupadmin', Auth::id()]])->get();

Сначала я хочу выполнить первый оператор db, а затем я хочу отфильтровать коллекцию / переменную. Как это ниже. Но я получаю ошибку. Что я должен изменить?

$groups = V_Member::where('groupadmin', '=', Auth::id())->get();
$members = $groups::where(['idgroup', '=', $groupid])->get();

Это сообщение об ошибке

Нестатический метод Illuminate \ Support \ Collection :: where () не должен вызываться статически

Ответы [ 3 ]

0 голосов
/ 25 августа 2018

Поскольку $ groups - это коллекция, а не класс модели ...

Вы должны использовать ->where() вместо ::where()

Не путайте коллекции с красноречивыми запросами, это распространенная ошибка.

Кроме того, не путайте методы построения запросов с eloquent с методами для коллекций, что является еще одной распространенной ошибкой.

0 голосов
/ 25 августа 2018

Вы можете просто использовать:

$members = $groups->where('idgroup', $groupid);

Оператор = не требуется, но вы можете использовать его там, где хотите. Вы также можете взглянуть на , где документация по методу .

0 голосов
/ 25 августа 2018

Если вы хотите отфильтровать коллекцию вместо выполнения 2 запросов, вам просто нужно изменить:

$members = $groups::where(['idgroup', '=', $groupid])->get();

на:

$members = $groups->where('idgroup', '=', $groupid);

Для получения дополнительной информации вы можете получитьвзгляните на документацию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...