在Laravel中创建多态字段名称的规则是什么?

Mar*_*ues 4 php relationship polymorphic-associations laravel eloquent

我使用Laravel并不是新手,但这是我第一次需要/想要使用多态关系.我在Laravel.com上看到了一个例子,它说我应该将' imageable_id '用于一个名为'images'的表,在另一个例子中我看到'commentable_id'到表'comments'.

是否有创建名称的规则?

例如:我想创建一个表'类别',用于'帖子''设置'.在这种情况下,我应该使用'categoryable_id'作为名称吗?

rob*_*lli 9

除默认约定外,没有规则.默认情况下,您定义前缀,Laravel将设置_id和_type后缀.该字段由您在关系中定义的内容决定:

例如,在帖子或设置上:

public function category()
{
    return $this->morphMany('App\Category', 'categoryable');
}
Run Code Online (Sandbox Code Playgroud)

这样,您的模型将在category Category中搜索categoryable_id和categoryable_type.categoryable_id默认情况下将匹配您的模型ID,categoryable_type将匹配您的模型的FQCN(例如'App\Post').

如果您希望更改Laravel设置多态列名称的方式,可以使用相同方法的第3和第4个参数设置它们,例如:

public function category()
{
    return $this->morphMany('App\Category', 'categoryable', 'model_type', 'model_id');
}
Run Code Online (Sandbox Code Playgroud)

所以没有真正的规则.您可以根据需要自由定义它,或使用默认约定.

资料来源:http://laravel.com/docs/5.1/eloquent-relationships#many-to-many-polymorphic-relations