1

拜托,我有与模型角色有关系的模型用户

users
    id - integer
    name - string
    email - string


roles
    id - integer
    name - string
    description - string

我想从类角色返回用户只是一些列 - 只是 id 和 name-

我的代码是这样的:

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

        } 

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


return $user;

我尝试使用 with(['role:id,name']) 方法我遇到了同样的问题。

我得到结果

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

提前致谢

4

1 回答 1

1

首先检查 Laravel Eloquent关系文档并尝试以下操作:在您的User模型中确保具有一对多关系

对于Eager Loading使用:

$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']);
}]);

希望这可以帮助你。

于 2020-05-25T23:04:55.630 回答