Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过多态模型还是无中介的变形?_Php_Laravel_Eloquent_Polymorphism_Polymorphic Associations - Fatal编程技术网

Php 通过多态模型还是无中介的变形?

Php 通过多态模型还是无中介的变形?,php,laravel,eloquent,polymorphism,polymorphic-associations,Php,Laravel,Eloquent,Polymorphism,Polymorphic Associations,考虑以下雄辩的文档多态性示例作为起点: () 在这个变化中,有点相反的方向。用户有许多媒体。媒体是多态的,可以是任何模型 目标是能够查询User->media关系并返回相应的post和video模型 问题:目前我获得post或video模型的唯一方法是查询mediable关系:User->media->mediable。为了映射多态模型,我们需要记录媒体id和媒体类型的medias表 HasManyThrough关系似乎是合乎逻辑的解决方案,但似乎受到必须知道所需模型类型的限制 有没有办法达到我

考虑以下雄辩的文档多态性示例作为起点: ()

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

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

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

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

有没有办法达到我想要的结果

DB:

型号:

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');
  }
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');
  }