【问题标题】:Creating polymorphic Many to Many relations in Laravel 4在 Laravel 4 中创建多态多对多关系
【发布时间】:2013-09-05 01:56:08
【问题描述】:

我需要在 laravel 4 中创建 多态 多对多关系,我不完全确定这是否可能。

例如

TagModel
 - id
 - title
 - slug

PostModel
 - id
 - title
 - slug
 - content

 PageModel
  - id
  - title
  - slug
  - content

这当然会有 tags_tagable 数据透视表这样

 tags_tagable
  - tag_id
  - tagable_id
  - tagable_type

【问题讨论】:

    标签: database polymorphism laravel laravel-4 eloquent


    【解决方案1】:

    多态多对多关系将于 11 月在 Laravel 4.1 中发布。

    如果需要,您可以尝试切换到 4.1 分支并立即使用它们。但在这个阶段,我还没有看到任何关于它们使用的具体文档——只有 Taylor 的推文。

    See tweet here

    【讨论】:

      【解决方案2】:

      Laravel 4.1 现在支持多态多对多关系。

      下面的示例显示了我如何实现与产品和帖子共享照片。

      数据库架构

      照片

      id              integer
      filename        string
      alt             string
      

      拍照

      id              integer
      photoable_id    integer
      photoable_type  string
      

      型号

      照片模特

      class Photo extends Eloquent
      {
      public function products(){
          return $this->morphedByMany('Product', 'photoable');
      }
      
      public function posts(){
          return $this->morphedByMany('Post', 'photoable');
      }
      }
      

      产品型号

      class Product extends Eloquent
      {
      public function photos(){
          return $this->morphToMany('Photo', 'photoable');
      }
      }
      

      后模型

      class Post extends Eloquent
      {
      public function photos(){
          return $this->morphToMany('Photo', 'photoable');
      }
      }
      

      通过以上内容,我可以访问附加到产品的所有照片,如下所示:

      $product = Product::find($id);
      $productPhotos = $product->photos()->all();
      

      我还可以迭代以将所有照片显示为任何模型集合。

      foreach ($productPhotos as $photo)
      {
          // Do stuff with $photo
      }
      

      只需更改一些型号名称,几乎可以完全按照您的要求复制上述内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-28
        • 2017-07-01
        • 1970-01-01
        • 2020-07-06
        • 2014-07-22
        相关资源
        最近更新 更多