Laravel获得不在团队中的用户

时间:2016-10-05 09:57:46

标签: php sql laravel eloquent relationship

我有一个用户表和一个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,但我确信我已经忽略了雄辩的文档中的内容

1 个答案:

答案 0 :(得分:0)

试试这样:

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;
}