我正在这里测试流明,并对多对多关系有疑问。
我已经阅读了文档,但是我要么忽略了答案,要么我觉得自己很笨。还必须补充一点,我对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之间的中间人?还是有其他方法?
谢谢
答案 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;
}