小编Rif*_*fki的帖子

Eloquent Many to Many选择没有特定角色的用户

所以,我有UserRole许多一对多的关系模型,我有3个角色:super,adminmoderator有4个用户,让我们说:John,Mike,JamesLarry.

Johnsuper,Mikeadminmoderator角色,Jamesadmin和,Larrymoderator.要显示没有特定角色的用户,我创建了此范围:

public function scopeDoesntHaveRoles($query, $roles = [], $column = 'id') {
    return $query->whereDoesntHave('roles')->orWhereHas('roles', function ($q) use ($roles, $column) {
        $q->whereNotIn($column, $roles);
    });
}
Run Code Online (Sandbox Code Playgroud)

当我打电话User::doesntHaveRoles([1])->lists('name', 'id')来获取没有super角色的用户时,它会起作用并返回:

{"2":"Mike","3":"James","4":"Larry"}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试列出没有admin角色的用户时User::doesntHaveRoles([2])->lists('name', 'id'),肯定James没有在那里显示,但是Mike当他实际上有admin角色时出现了:

{"1":"John","2":"Mike","4":"Larry"}
Run Code Online (Sandbox Code Playgroud)

我认为这是因为 …

laravel eloquent laravel-5.2

5
推荐指数
1
解决办法
649
查看次数

标签 统计

eloquent ×1

laravel ×1

laravel-5.2 ×1