我有LessonGroup
模型,其表格名称为lesson_groups
。如果我想在另一个表格中使用此表id
作为外键,我应该选择哪个列名称,Laravel可以自动将其区分为foreign key到lesson_group
表?
lesson_groups
id
name
-----------------------------------------
fields
id
//foreign key to lesson_groups(what should be the name of this column?)
name
答案 0 :(得分:7)
以下摘自Laravel Eloquent Documentation:
Eloquent通过检查关系方法的名称并使用
_id
为方法名称添加后缀来确定默认外键名称。
因此,为了使命名约定无缝地工作,您需要在Field
模型中定义这样的关系:
public function lesson_group()
{
return $this->hasOne('App\LessonGroup');
}
答案 1 :(得分:1)
这里的问题是Laravel将表名从Model name复数化。例如:LessonGroup
模型将创建表lesson_groups
(通过迁移)。
因此正确的外键字段名称应为lesson_group_id
?
答案 2 :(得分:0)
一个好的命名约定是带有下划线的模型名称,后跟带有下划线的id。例如,FishingBoat将是fishing_boat_id。
除非另有规定,否则Laravel将自动假设外键和/或本地键采用此格式。