Laravel 5.6跨表的灵活关系

时间:2019-04-07 08:26:07

标签: php laravel laravel-5 eloquent

EER Diagram

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

根据附图,我需要related_to_id为以下内容之一...

  • Purchases.purchase_id
  • Invoices.invoice_id

随着我们发现更多的记录可能会导致库存变动,将来可能还会添加更多的记录。

现在,我已经为库存移动表的数据库架构添加了一个related_to_type字段,以便我可以指定特定移动记录所涉及的记录类型。但是我一直在努力寻找如何为这种关系建立模型的方法,或者它是否会以这种方式起作用,或者我希望每种类型的关系都需要一个单独的字段,因为我希望能够阅读通过ORM的相关记录方案获取相关记录。

1 个答案:

答案 0 :(得分: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');
  }
}

这里每个用户和帖子都可以有一个图像,每个图像都有一个可成像的图像,可以是用户或帖子。