Laravel Активная загрузка - load () возвращает null - PullRequest
1 голос
/ 26 мая 2020

пожалуйста, у меня есть модельный пользователь, который связан с модельной ролью

users
    id - integer
    name - string
    email - string


roles
    id - integer
    name - string
    description - string

Я хочу вернуть пользователю только какой-то столбец из роли класса -just id и name-

my код похож на:

$user = User::whereHas('role', function (Builder $query) {
                return $query->where('name', 'admin');
            })
                ->select(['id', 'email'])
                ->get();

        } 

$user->load('role:id,name');


return $user;

Я пытаюсь использовать с методом (['role: id, name']), я столкнулся с той же проблемой.

получаю в результате

{"id":1,"email":"admin@gmail.com","role":null}

Заранее спасибо

1 Ответ

1 голос
/ 26 мая 2020

Проверьте Laravel Документ Eloquent Relationship сначала и попробуйте следующее: в вашей модели User убедитесь, что имеется отношение один ко многим

для Активная загрузка используйте:

$user = User::with(['role' => function($q){
    $q->where('name','admin')
      ->select(['id', 'name']);
}])
->select(['name','email'])
->get();

для Ленивую нетерпеливую загрузку используйте:

$users = App\User::whereHas('role',function(Builder $q){ 
    $q->where('name','admin'); 
})->get();



$user->load(['role' => function ($q) {
    ->addSelect(['id','name']);
}]);

Надеюсь, это вам поможет.

...