通过Table列在Many To Many表中获取一行

时间:2014-03-20 22:55:18

标签: php laravel many-to-many

如果我有多对多表

Users
Roles
Role_User

角色有一个名字。 Role_User包含一个数据透视值,即"值"。

我怎样才能轻松找回"一个"来自用户角色的名称角色以及获取透视数据?

像:

$attr = $user->getRole('Admin');

$attr->pivot->value;

foreach可能会起作用,但似乎有更有效的方法吗?没有?

1 个答案:

答案 0 :(得分:0)

定义关系时,您需要定义要从数据透视表中拉入的列。

public function roles()
{
    return $this->belongsToMany('Role')->withPivot('value');
}

现在,不确定这是否是最佳方式,但如果您知道角色的ID,那么它将变得更容易。

$role = $user->roles()->find(1); // Where 1 is the ID of the admin role

dd($role->pivot->value);

文档更多关于working with pivot tables