Php Laravel关系-数据透视表中链接到其他模型的其他字段
我把问题简化了,直截了当。我有三个表,Php Laravel关系-数据透视表中链接到其他模型的其他字段,php,laravel-5,laravel-blade,laravel-5.8,Php,Laravel 5,Laravel Blade,Laravel 5.8,我把问题简化了,直截了当。我有三个表,用户,角色,帐户 通常,我会将用户模型设置为与角色具有多对多关系,但我希望这些角色特定于每个帐户。因此,我在pivot表中添加了一个额外的字段。以下是我拥有的表格和字段 用户表 |————————— | id | name | |————————— | 1 | Bob | | 2 | Jim | | 3 | Fred | |————————— |————————— | id | title | |————————— |
用户
,角色
,帐户
通常,我会将用户模型设置为与角色具有多对多关系,但我希望这些角色特定于每个帐户。因此,我在pivot表中添加了一个额外的字段。以下是我拥有的表格和字段
用户表
|—————————
| 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 |
|—————————
角色表
|—————————
| 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 |
|—————————
账户表
|—————————
| 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\u user
,其中有一个帐户的附加透视字段
|—————————
| role_id | user_id | account_id
|—————————
| 1 | 3 | 1
| 2 | 2 | 1
| 3 | 2 | 3
| 3 | 1 | 2
|—————————
在设置多对多关系时,我在belongTomany函数上使用了with pivot
函数。这允许我使用$user->roles->pivot->account\u id
获取信息,但我需要的是能够获取该公司的名称。它传递给blade模板的只是数据透视表中的id,而不是将其链接到实际的帐户模型
有没有一种方法可以让Eloquent以与原始关系相同的方式获得整个模型?创建一个自定义轴心模型
使用illumb\Database\elount\Relations\Pivot;
类RoleUserAccountPivot扩展了Pivot
{
公共函数用户()
{
返回$this->belongsTo(用户::类);
}
公共职能角色()
{
返回$this->belongsTo(角色::类);
}
公共职能账户()
{
返回$this->belongsTo(账户::类);
}
}
更新你的私人关系
下面是一个具有User::roles
关系的示例
class用户//扩展。。。
{
公共职能角色()
{
使用(RoleUserAccountPivot::class)->withPivot('account_id')返回$this->belongToMany(Role::class,/*其他参数*/)->using(RoleUserAccountPivot::class)->withPivot;
}
}
用法
$user->roles->first()->pivot->account//返回帐户模型
希望能有帮助
参考链接:
您正在使用的Laravel版本是什么?此外,用户/角色和帐户模型之间的关系是什么?Laravel 5.8。。。用户可以有许多角色,每个角色都与特定的帐户相关联。所以用户/角色是很多的,但我想为每个用户/角色对指定哪个帐户。所以角色属于一个帐户&一个帐户可以有很多角色,对吗?不完全是。用户可以在每个帐户中拥有一个角色。例如,User1可能是AccountA的管理员,但可能只是AccountB中的作者,因此我需要在透视表中链接帐户ID。那很好,但我能收到的只是帐户ID,而不是关于帐户模型的任何其他信息。