流明/ Laravel多对多(在中间获取数据)

时间:2018-11-14 13:32:37

标签: php laravel eloquent many-to-many lumen

我正在这里测试流明,并对多对多关系有疑问。

我已经阅读了文档,但是我要么忽略了答案,要么我觉得自己很笨。还必须补充一点,我对MVC模式还很陌生。

因此,我在这里有一个示例,其中我们可以拥有许多权限,许多用户,并且每个用户可以拥有许多权限。

我有3个数据库表:

-------------------------------------
| users | id | firstname | lastname |
-------------------------------------

----------------------------------------------------------------
| permissions_users | id | permission_id | user_id | from | to |
----------------------------------------------------------------

----------------------------------
| permissions | id | name | desc |
----------------------------------

现在我已经创建了2个模型:

用户:

public function permissions(){
    return $this->belongsToMany('App\Permission', 'permissions_users', 'user_id', 'permission_id');
}

权限:

public function users(){
    return $this->belongsToMany('App\User', 'permissions_users', 'permission_id', 'user_id');
}

现在我的问题是,如果我想在Permissions_users表中获取“自”和“至”日期,该怎么办?

我是否创建一个称为PermissionUser的模型,该模型充当User和Permission之间的中间人?还是有其他方法?

谢谢

2 个答案:

答案 0 :(得分:1)

您也可以在选择关联中定义这些属性。我认为这对您有用。

public function permissions()
{
    return $this->belongsToMany('App\Permission', 'permissions_users', 'user_id', 'permission_id')->select(['from', 'to']);
}

您可能还需要在选择中添加权限列,否则可能仅在关系对象中显示与之对应的内容。

答案 1 :(得分:1)

public function permissions()
{
    return $this
        ->belongsToMany('App\Permission', 'permissions_users', 'user_id', 'permission_id')
        ->withPivot('from', 'to');
}

foreach($user->permissions as $permission){
    $permission->pivot->from;
    $permission->pivot->to;
}