【发布时间】:2019-11-14 17:45:15
【问题描述】:
我已经简化了问题以达到重点。我有三张桌子,users、roles、account。
通常我会将 User 模型设置为与角色建立多对多关系,但我希望这些角色特定于每个帐户。所以我在数据透视表中添加了一个额外的字段。这是我拥有的表格和字段;
“用户”表
|—————————
| id | name |
|—————————
| 1 | Bob |
| 2 | Jim |
| 3 | Fred |
|—————————
“角色”表
|—————————
| id | title |
|—————————
| 1 | Administrator |
| 2 | Manager |
| 3 | Approver |
|—————————
“帐户”表
|—————————
| id | name |
|—————————
| 1 | ABC Company |
| 2 | XYZ Shipping |
| 3 | KLM Transport |
|—————————
然后我有一个数据透视表role_user 和一个额外的账户数据透视字段;
|—————————
| role_id | user_id | account_id
|—————————
| 1 | 3 | 1
| 2 | 2 | 1
| 3 | 2 | 3
| 3 | 1 | 2
|—————————
在设置多对多关系时,我在 belongsToMany 函数上使用了 withPivot 函数。这使我可以使用$user->roles->pivot->account_id 获取信息,但我需要的是能够获取该公司的名称。它传递给刀片模板的只是来自数据透视表的 id,而不是将其链接到实际的 Account 模型。
Eloquent 有没有办法以与原始关系相同的方式获得整个模型?
【问题讨论】:
-
你使用的 Laravel 版本是什么?另外,User/Role 和 Account 模型之间有什么关系?
-
Laravel 5.8... 用户可以有多个角色,每个角色都与一个特定的帐户相关联。所以用户/角色是多对多,但我想为每个用户/角色对指定哪个帐户。
-
所以角色属于一个账户,一个账户可以有很多角色,对吧?
-
不完全。用户可以在每个帐户中拥有一个角色。例如,User1 可能是 AccountA 的管理员,但可能只是 AccountB 中的作者,因此我需要在数据透视表中链接 Account ID。没关系,但我只能收到帐户 ID,而不是有关帐户模型的任何其他内容。
标签: php laravel-5 laravel-blade laravel-5.8