【问题标题】:Laravel get users that are not in a teamLaravel 获取不属于团队的用户
【发布时间】: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 文档中的某些内容

【问题讨论】:

    标签: php sql laravel eloquent relationship


    【解决方案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 列中的人
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 2021-03-20
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多