我有3个表 - 用户,角色和role_user . 每个用户都被分配到role_user表中的角色,角色列表可以在角色表中找到 . 我想选择角色ID为12的所有用户 . 我目前正在使用查询构建器执行此操作,但我需要它以雄辩的格式 . 我对Laravel雄辩并不是很好,我需要帮助才能将查询转换成雄辩的 . 这就是我目前正在做的事情:
$users = DB::table('users')
->join('role_user', 'users.id', '=', 'role_user.user_id')
->join('roles', 'roles.id', '=', 'role_user.role_id')
->where('roles.id', '=', 12)
->get();
4 回答
要以雄辩的格式运行相同的数据库查询,您必须执行以下操作:
如果启用了laravel身份验证,您应该创建一个应该使用项目创建的用户模型,您可以在here上阅读更多内容 . 如果没有,你必须创建你的模型 .
要在控制器或类中使用模型,必须在php文件中启用它:
use App\User;
$users = User::join('role_user','users.id', '=', 'role_user.user_id') ->join('roles', 'roles.id', '=', 'role_user.role_id') -> where('roles.id', '=', 12) ->get();
$ users现在将成为一个集合,并受制于集合中可用的所有优秀方法 .
我建议花点时间浏览laracast的免费视频教程,以真正了解Model如何与Eloquent一起使用 . 此外,还可以查看开箱即用的Auth功能 . 我倾向于使用Auth对角色进行所有调用 . 希望这可以帮助 .
使用Eloquent,您可以轻松地检索关系数据,并在Laravel 5中使用您的方案示例
我们有三个型号
1)用户(有一个role_user)
2)角色(有很多role_user)
3)RoleUser(属于用户和角色)
1)Users.php
2)Roles.php
2)RoleUser.php
您需要检查数据库是否与模型中的关系和设置 . 用户在role_user表中有一个角色 . 角色在role_user表中为用户提供了许多角色 . 角色用户属于用户和角色 . 在laravel / database中设置关系后,可以轻松检索相关信息 .
例如,如果要使用userrole检索用户,则需要编写:
如果要获取用户角色名称,请执行以下操作:
Now come to your query: You want to select those users only who has role id 12. It's now becomes simple to write in eloquent format.
你可以在这里了解更多:https://laravel.com/docs/5.6/eloquent-relationships
这将为角色ID为12的用户提供:
我假设你正确地 Build 了关系 .
如果你想动态传递$ role_id,那么使用以下命令:
在角色模型中,您应该添加它
在控制器中