我有一张表,该表将由Laravel中的库存变动模型处理。我想建立一个可以关联到许多不同表的“关联”字段。
根据附图,我需要related_to_id为以下内容之一...
随着我们发现更多的记录可能会导致库存变动,将来可能还会添加更多的记录。
现在,我已经为库存移动表的数据库架构添加了一个related_to_type字段,以便我可以指定特定移动记录所涉及的记录类型。但是我一直在努力寻找如何为这种关系建立模型的方法,或者它是否会以这种方式起作用,或者我希望每种类型的关系都需要一个单独的字段,因为我希望能够阅读通过ORM的相关记录方案获取相关记录。
答案 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');
}
}
这里每个用户和帖子都可以有一个图像,每个图像都有一个可成像的图像,可以是用户或帖子。