繁体   English   中英

Laravel与枢轴的多态关系

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM