Laravel error Попытка получить свойство необъекта при фильтрации с relashionship - PullRequest
1 голос
/ 30 марта 2020

Я получаю сообщение об ошибке Trying to get property of non-object, когда я пытаюсь получить значение

{{ $user->adminProfile->company_name }}

Здесь adminProfile связано с Пользовательской моделью. Отношение правильно определено.

Когда я использую

$users = User::role('admin')->with('adminProfile')->get();

, он работает отлично. Однако я получаю сообщение об ошибке, когда используется еще один фильтр

$users = User::role('admin')->with(['adminProfile' => function($q) {
    $q->where('status', 1);
}])->get();

1 Ответ

0 голосов
/ 30 марта 2020

Проблема в том, что вы получаете ВСЕХ пользователей с ролью администратора, но вы ТОЛЬКО загружаете adminProfiles со статусом 1.

Это означает, что что у вас будут пользователи, для которых отношение adminProfile вернет null.

Чтобы отфильтровать пользователей, у которых нет adminProfile со статусом 1, вам придется использовать whereHas вместо with:

$users = User::role('admin')->whereHas(['adminProfile' => function($q) {
    $q->where('status', 1);
}])->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...