我正在开发一个在User
和Club
之间存在多对多关系的项目。这种关系有效,我可以使用$user->clubs
获取相应的对象。数据透视表我命名为memberships
。我可以使用$club->pivot
获取数据透视数据。在迁移中为memberships
表定义了外键。
但是,我希望透视表由模型表示,以便我可以轻松更新Membership
的属性,例如角色(甚至可以将Role
模型添加到{{1} }!)或Membership
。
我在文档中查看了“Defining A Custom Pivot Model”,但它说的内容对我不起作用,我得到了:
status
我还看了this description如何做到这一点,但它或多或少与上面相同。
ErrorException
Argument 1 passed to Illuminate\Database\Eloquent\Model::__construct() must be of the type array, object given
型号:
Membership
以前有人这样做过吗?
答案 0 :(得分:2)
这已由suggestion by a reddit user解决,以扩展我的会员模型中的Pivot
。我还必须在用户和俱乐部模型的关系声明中添加->withPivot('status', 'role')->withTimestamps()
。
答案 1 :(得分:0)
您可以通过添加一些手动代码来完成此操作。
您的会员资格模型看起来不错。如果您定义方法$ user-> clubs(),您可以轻松获得$ user的所有俱乐部,您可以手动获得所有俱乐部。
clubs() {
$memberships=$this->memberships;
$clubs=new \Illuminate\Database\Eloquent\Collection();
foreach($memberships as $m) {
$clubs=$clubs->merge($m->clubs);
}
return $clubs;
}