laravel外键列命名约定

时间:2016-02-21 17:13:14

标签: laravel model foreign-keys

我有LessonGroup模型,其表格名称为lesson_groups。如果我想在另一个表格中使用此表id作为外键,我应该选择哪个列名称,Laravel可以自动将其区分为foreign keylesson_group表?

lesson_groups
   id
   name
 -----------------------------------------
fields
  id
  //foreign key to lesson_groups(what should be the name of this column?)
  name

3 个答案:

答案 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将自动假设外键和/或本地键采用此格式。