【发布时间】:2018-11-11 17:33:15
【问题描述】:
在我的 Laravel 应用程序中,我有三个数据库表,分别称为用户、项目和角色。它们之间存在 m:n 关系,所以我还有一个名为 project_user_role 的数据透视表。数据透视表包含 user_id、project_id 和 role_id 列。请参阅 MySQL Workbench 的屏幕截图。
我的用户、项目和角色模型被定义为如下的 belongsToMany 关系:
//User model example
public function projects()
{
return $this->belongsToMany('App\Library\Models\Project', 'project_user_role')->withPivot(['user_id','role_id']);
}
现在我可以很容易地获得这样的经过身份验证的用户的项目:
$user = Auth::user();
$projects = $user->projects;
这个反应看起来像这样:
[
{
"id": 1,
"name": "Test project",
"user_id": 1,
"created_at": "2018-05-01 01:02:03",
"updated_at": "2018-05-01 01:02:03",
"pivot": {
"user_id": 2,
"project_id": 17,
"role_id": 1
}
},
]
但我想将有关用户角色的信息“注入”到响应中:
[
{
"id": 1,
"name": "Test project",
"user_id": 1,
"created_at": "2018-05-01 01:02:03",
"updated_at": "2018-05-01 01:02:03",
"pivot": {
"user_id": 2,
"project_id": 17,
"role_id": 1
},
roles: [
{
"id": 1,
"name": "some role name",
"display_name": "Some role name",
"description": "Some role name",
"created_at": "2018-05-01 01:02:03",
"updated_at": "2018-05-01 01:02:03",
}
]
},
]
有可能吗?谢谢
【问题讨论】:
-
在用户模型中定义另一个一对多关系。 user 属于角色,并且 rols 有很多用户。并急切地加载`$user->with('role', 'projects')