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,而不是关于帐户模型的任何其他信息。