Laravel 获取不属于团队的用户
Posted
技术标签:
【中文标题】Laravel 获取不属于团队的用户【英文标题】:Laravel get users that are not in a team 【发布时间】:2017-02-13 17:14:09 【问题描述】:我有一个 users 表和一个 salesTeams 表。
一个用户只能是一个销售团队的领导者。一个销售团队只能有一个领导。
在salesTeams 我有一个leader_id (users.id)。 在用户表上,我还有一个 role_id 列(角色 id 3 用于领导者) 在用户模型上,我有这个功能
public function salesTeam()
return $this->hasOne('App\Models\SalesTeam', 'leader_id');
检索用户团队(如果有)。
在 UserRoles 模型上我有这个功能
public function scopeOnlyLeaders($query)
$query->where('id', 3)->with('users');
return $query;
获取角色 id 对应领导者的所有用户
我需要一个函数来检索当前未分配给团队的所有领导者。 现在我唯一的解决方案是原始 sql,但我确定我忽略了 eloquent 文档中的某些内容
【问题讨论】:
【参考方案1】:试试这样:
public function scopeOnlyLeaders($query)
$query->with(['users' => function ($query)
$query->select('users.*')
$query->leftJoin('salesteam', 'salesteam.id', '=', 'users.leader_id')
->whereNull('leader_id');
]);
return $query;
【讨论】:
这完全一样。我想要当前未分配给任何团队的用户。所以那些 id 不在 salesteams 表的 leader_id 列中的人以上是关于Laravel 获取不属于团队的用户的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.2 Eloquent ORM 从 3 个表中获取数据