如何在多态关系中手动设置存储在模型类型列中的值?

时间:2016-01-23 11:51:39

标签: laravel polymorphic-associations

考虑以下表格:

staff
    id - integer
    name - string

products
    id - integer
    price - integer

photos
    id - integer
    path - string
    imageable_id - integer
    imageable_type - string

Laravel默认情况下将模型类的名称存储在imageable_type列.e.g App\ProductApp\Staff中。如何手动设置类型值?例如productstaff

2 个答案:

答案 0 :(得分:2)

您可以在模型上设置morphClass属性。这将允许您设置*_type字段中使用的值。

class Product extends Model
{
    protected $morphClass = 'product';
}

class Staff extends Model
{
    protected $morphClass = 'staff';
}

答案 1 :(得分:0)

我不确定您为什么要这样做但是,查看MorphMany()方法的签名:https://laravel.com/api/5.2/Illuminate/Database/Eloquent/Model.html#method_morphMany

MorphMany morphMany(string $related, string $name, string $type = null, string $id = null, string $localKey = null)

您可以更改$ type字符串。