【问题标题】:Laravel 5.6 Flexible Relationship Spanning Differing TablesLaravel 5.6 灵活的关系跨越不同的表
【发布时间】:2019-08-28 15:13:50
【问题描述】:

我有一张表格,将由 Laravel 中的模型处理库存变动。我想建立一个关联字段,它可以与许多不同的表相关。

根据附图,我需要将关联对象 ID 设为以下之一...

  • Purchases.purchase_id
  • Invoices.invoice_id

随着我们发现更多可能导致股票变动的记录,未来可能会添加更多记录。

现在,我在库存变动表的数据库模式中添加了一个 related_to_type 字段,以便我可以指定特定变动记录所涉及的记录类型。但是我一直在努力弄清楚如何为这种关系建立模型,或者它是否会以这种方式工作,或者我是否需要为每种类型的关系设置一个单独的字段,因为我希望能够阅读通过 ORM 的相关记录方案获取相关记录。

【问题讨论】:

    标签: php laravel laravel-5 eloquent


    【解决方案1】:

    这是 polymorphic relations 的确切用例,它们为您的模型提供您希望的一列,指示关系类型和相关模型的 ID。

    另请参阅 laravel 文档中的此示例:

    <?php
    
    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Image extends Model {
      /**
       * Get all of the owning imageable models.
       */
      public function imageable() {
        return $this->morphTo();
      }
    }
    
    class Post extends Model {
      /**
       * Get the post's image.
       */
      public function image(){
        return $this->morphOne('App\Image', 'imageable');
      }
    }
    
    class User extends Model {
      /**
       * Get the user's image.
       */
      public function image()
      {
        return $this->morphOne('App\Image', 'imageable');
      }
    }
    

    这里每个用户和帖子都可以有一个图像,每个图像都有一个 imageable,它可以是用户也可以是帖子。

    【讨论】:

      猜你喜欢
      • 2018-12-21
      • 2014-12-29
      • 1970-01-01
      • 2021-11-13
      • 2018-09-18
      • 2017-12-03
      • 2019-04-18
      • 1970-01-01
      • 2018-10-18
      相关资源
      最近更新 更多