laravel外键列命名约定

laravel外键列命名约定,laravel,model,foreign-keys,Laravel,Model,Foreign Keys,我有一个LessonGroup模型,其选项卡名为lesson\u groups。如果我想在另一个选项卡中将此表id用作外键,我应该选择哪个列名,以便Laravel能够自动将其作为tolesson\u group表进行区分 lesson_groups id name ----------------------------------------- fields id //foreign key to lesson_groups(what should be the name

我有一个
LessonGroup
模型,其选项卡名为
lesson\u groups
。如果我想在另一个选项卡中将此表
id
用作外键,我应该选择哪个列名,以便Laravel能够自动将其作为to
lesson\u group
表进行区分

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

一个好的命名约定是模型名加下划线,id加下划线。例如,FishingBoat将是fishing_boat_id


除非另有规定,否则Laravel将自动假定外键和/或本地键采用此格式。

以下是以下内容的摘录:

Eloquent通过检查关系方法的名称,并用
\u id
作为方法名称的后缀,来确定默认外键名称

因此,要使命名约定无缝工作,您需要在
字段中定义如下关系:

公共功能课程组()
{
返回$this->hasOne('App\LessonGroup');
}

这里的问题是Laravel将模型名中的表名复数化。例如:
LessonGroup
模型将通过迁移生成表
LessonGroup

因此,正确的外键字段名称应该是
LessonGroup\u id

LessonGroup\u id
不起作用。lessongroups表将有一列id。引用LessonGroup的表(即关系)应该有一个LessonGroup\u id。请参阅下面定义外键约束的示例。是,当然我已经做了,但我想问一下命名惯例<代码>课程组id不起作用当您如上定义外键时,不需要列的名称。课程组id是一个很好的命名约定。什么不起作用?在定义关系时,我不会将foreing key column的名称设置为第二个参数:
return$this->belongsTo('App\LessonGroup','LessonGroup\u id')
Eloquent将自动将外键设为lesson\u group\u id。您可以将其保留为belongsTo('App\LessonGroup')约定是不将外键复数化,因此
lesson\u group\u id
是正确的。另外:
public function lessonGroup(){return$this->hasOne(App\lessonGroup::class);}