HasManyThrough Polymorphic model或morphto没有中介?

时间:2017-12-26 23:05:29

标签: php laravel eloquent polymorphism polymorphic-associations

考虑以下Eloquent docs多态示例作为起点: (https://laravel.com/docs/5.5/eloquent-relationships#polymorphic-relations

在这种变化中,它有点反方向。用户有很多媒体。媒体是多态的,可以是任何模型。

目标是能够查询User->media关系并返回相应的postvideo模型。

问题:目前我获得postvideo模型的唯一方法是查询mediable关系:User->media->mediable。为了映射多态模型,我们需要媒体表,其中记录了media_id和media_type。

HasManyThrough关系似乎是逻辑解决方案,但似乎必须知道所需的模型类型。

有没有办法达到我想要的效果?

DB:

user
    id

posts
    id - integer
    title - string
    body - text

videos
    id - integer
    title - string
    url - string

medias
    id - integer
    user_id - integer
    media_id - integer
    media_type - string

型号:

class User
  public function media()
  {
      return $this->hasMany('App\Media');
  }

class Media
  public function mediable()
  {
      return $this->morphTo();
  }

class Post
  public function Media()
  {
      return $this->morphMany('App\Media', 'mediable');
  }

class Videos
  public function Media()
  {
      return $this->morphMany('App\Media', 'mediable');
  }

0 个答案:

没有答案