【发布时间】:2018-07-08 13:08:11
【问题描述】:
一点业务逻辑:1 家公司可能有许多不同角色的用户。 1 位用户在公司中可能只有 1 个角色。
在数据库中,我有一个数据透视表company_user_roles。有 3 个字段:company_id, user_id, role_id。然后我有一个User 模型和belongsToMany 关系来获取用户的公司:
public function companies()
{
return $this->belongsToMany(
'App\Company',
'company_user_roles',
'user_id',
'company_id'
);
}
$user->companies 返回公司集合。但是每个公司都没有用户的角色。对于每家公司,我只有这个(这似乎是意料之中的):
#attributes: array:4 [▼
"id" => 1
"name" => "Company name"
"created_at" => "2018-07-08 15:45:40"
"updated_at" => "2018-07-08 15:45:42"
]
但我不明白如何为每个公司获取用户的角色。我想得到这样的东西:
#attributes: array:4 [▼
"id" => 1
"name" => "Company name"
"role" => [
"id": 1,
"name": "owner"
]
"created_at" => "2018-07-08 15:45:40"
"updated_at" => "2018-07-08 15:45:42"
]
或类似的东西,但无需对数据库进行额外查询。这种情况下如何实现这个逻辑?
【问题讨论】:
标签: php laravel eloquent foreign-keys