![](/img/trans.png)
[英]Laravel use a pivot field to filter polymorphic many to many relationship
[英]Laravel polymorphic relationship with pivot
假设我有可以被多个用户看到的帖子和视频。
- users
- id
- posts
- id
- videos
- id
- user_accessables (pivot)
- id
- user_id
- accessable_id
- accessable_type
在这样的示例中,我将用户关系设置为这样,但感觉有些不对劲
class User extends Model {
public function posts() {
return $this->morphedByMany(
Post::class,
'accessable',
'user_accessables'
);
}
public function videos() {
return $this->morphedByMany(
Video::class,
'accessable',
'user_accessables'
);
}
public function allowedEntities() {
return ($this->posts)->merge($this->videos);
}
}
使用allowedEntities()
我可以将两个模型集合在一起。
但是,我认为使用多态关系是通过关系而不是合并器关系返回实体的集合,对吗?
我在理解数据透视表的多态性时遇到了问题(文档中的标记示例似乎不一样)。
因为现在我不能做:
$collection = collect(); // multiple models of Video & Post
$user->allowedEntities()->sync($collection);
正如@Jonas Staudenmeir所说的那样,不可能有一个关系可以返回所有相关模型,但是您可以在模型上定义一个方法,该方法返回具有所需所有实体的查询构建器对象(在文档上进行搜索)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.