查询生成器 - 数据透视表 laravel

厄普西隆47

我如何只users从没有分配角色的数据库中获取用户属于多个角色,确切的关系是:

public function roles() {
    return $this->belongsToMany(Role::class, 'user_has_roles', 'user_id', 'role_id');
}

我的问题是,我只使用Query builder,而不使用模型,所以我不想使用关系。

编辑:

我正在处理迁移,所以在使用模型时请不要解决方案。

你可以使用doesntHave,我相信这只使用QueryBuilder

User::doesntHave('roles')->get();

参考:https : //laravel.com/docs/5.6/eloquent-relationships

更新

使用原始 SQL 查询,您可以做到这一点。

基本上,这试图做的是让所有用户id都在user_has_roles表中找不到它(意味着它没有任何关系)

SELECT  *
FROM    users
WHERE   id NOT IN (SELECT user_id FROM user_has_roles)

我认为您可以将其转换为JOIN或其他内容。不过,我不是原始 SQL 方面的专家。

更新尝试查询生成器

$usersWithoutRoles = DB::table('users')
        ->whereNotIn(function ($query) {
            $query->select(DB::raw('user_id'))
                  ->from('user_has_roles')
                  ->whereRaw('user_has_roles.user_id = users.id');
        })
        ->get();

参考:SQL - 从一个表中查找另一个表中不存在的记录

您可以在那里尝试其他替代方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel DB 查询生成器更新查询数据

来自分类Dev

Laravel 查询生成器 - 动态表名

来自分类Dev

联接以在查询生成器laravel中显示特殊数据

来自分类Dev

数据库中的IFNULL:查询生成器Laravel?

来自分类Dev

Laravel查询生成器查询

来自分类Dev

无法使用laravel查询生成器来联接两个表的结果

来自分类Dev

如何使用php操作laravel查询生成器输出数据

来自分类Dev

Laravel GroupBy数据库查询生成器不起作用

来自分类Dev

Laravel查询生成器搜索(匹配)

来自分类Dev

laravel雄辩的关系从查询生成器

来自分类Dev

laravel orderByRaw()在查询生成器上

来自分类Dev

Laravel查询生成器的联接计数

来自分类Dev

Laravel查询生成器输出测试

来自分类Dev

Laravel删除查询生成器

来自分类Dev

Laravel搜索功能查询生成器

来自分类Dev

laravel雄辩的关系,从查询生成器

来自分类Dev

Laravel删除查询生成器

来自分类Dev

Laravel查询生成器输出测试

来自分类Dev

Laravel的雄辩的ORM与查询生成器

来自分类Dev

Lumen中的Laravel查询生成器

来自分类Dev

Laravel 查询生成器:意外输出

来自分类Dev

Laravel foreach 查询生成器结果

来自分类Dev

Laravel 查询生成器左连接

来自分类Dev

Laravel:查询生成器生成器返回与实际 mysql 查询不同的结果

来自分类Dev

Laravel通过数据透视表查询数据

来自分类Dev

Laravel通过数据透视表查询数据

来自分类Dev

Laravel:在“查询生成器”或“雄辩的”中更改原始查询

来自分类Dev

Laravel-使用查询生成器命名的子查询

来自分类常见问题

Laravel Fluent查询生成器与子查询联接