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 显示所有用户并检查是不是属于 Bans 表

Laravel 属于不工作

Laravel 5.2 Eloquent ORM 从 3 个表中获取数据

从 $.load 获得的数组作为选择选项 Laravel Form

如何获取每个团队的结果 laravel

如何在 Sanctum Laravel 中通过 Token 获取用户