Php 迁移Laravel中的外来方法中的第二个参数是什么?

Php 迁移Laravel中的外来方法中的第二个参数是什么?,php,laravel,parameters,foreign-keys,migration,Php,Laravel,Parameters,Foreign Keys,Migration,我在这个新项目中与拉威尔合作,但有一段代码我不知道它是做什么的 $table->foreign('course_id', '54419_596eedbb6686e')->references('id')->on('courses'); 上面这一行是我的一个迁移文件,我知道我是说'course_id'是一个外键,与courses表上的'id'有关。但我不知道的是,第二个参数“54419ɔEedBB6686E”是什么,如果我在方法描述中看到,它说这是一个名称,但是什么的名称?我应

我在这个新项目中与拉威尔合作,但有一段代码我不知道它是做什么的

$table->foreign('course_id', '54419_596eedbb6686e')->references('id')->on('courses');
上面这一行是我的一个迁移文件,我知道我是说'course_id'是一个外键,与courses表上的'id'有关。但我不知道的是,第二个参数“54419ɔEedBB6686E”是什么,如果我在方法描述中看到,它说这是一个名称,但是什么的名称?我应该创建一个像这样的数字,然后把它放在我所有的外键中吗?是否有生成此编号的命令

无论如何,如果有人能帮助我理解这段代码,那就太好了。
希望我已经清楚地回答了这个问题。

第二个参数是外键的名称

默认情况下,此$table的外键名称->外键'course_id'->引用'id'->在'courses'上;将是课程(当然)id(外国)


在本例中,$table->foreign'course_id',54419_596eedb6686e'->参考'id'->关于'courses';您的外键将命名为54419_596eedb6686e。

第二个参数是外键的名称

默认情况下,此$table的外键名称->外键'course_id'->引用'id'->在'courses'上;将是课程(当然)id(外国)


在本例中,$table->foreign'course_id',54419_596eedb6686e'->参考'id'->关于'courses';您的外键将命名为54419_596eedb6686e。

当您创建外键时,您正在创建一个约束,这就是外键函数的第二个参数所指定的:约束名称

如果您使用的是mysql,您可以登录Shell或任何用于签出db的程序,并运行SHOW CREATE TABLE_name。这将输出有关指定表的信息。在那里,您可以将“54419ɔeedb6686e”视为表的约束。大概是这样的:

约束约束\u名称外键列\u id引用表\u名称id(位于删除级联上)


您可以在以下链接中找到更多的信息:

当您创建外键时,您正在创建一个约束,这就是foreign函数的第二个参数所指定的:约束名称

如果您使用的是mysql,您可以登录Shell或任何用于签出db的程序,并运行SHOW CREATE TABLE_name。这将输出有关指定表的信息。在那里,您可以将“54419ɔeedb6686e”视为表的约束。大概是这样的:

约束约束\u名称外键列\u id引用表\u名称id(位于删除级联上)


您可以在以下链接中找到更多信息:

当您创建迁移时,请将此信息用于外键迁移

 $table->foreign('foreign_id')
            ->references('id')->on('main_table_name')
            ->onUpdate('CASCADE')
            ->onDelete('RESTRICT');

当您创建迁移时,请将其包含在外键迁移中

 $table->foreign('foreign_id')
            ->references('id')->on('main_table_name')
            ->onUpdate('CASCADE')
            ->onDelete('RESTRICT');

哦,好吧,这是有道理的。非常感谢。我再问你几件事。这是一种好的做法吗?我的意思是用一个值命名外键?如果是,这个数字是由某个命令生成的?@CristhoferAlencar有什么特别的理由用值来命名外键吗?我不太确定这是否是一个真正好的练习,因为你不可能仅仅通过看名字就知道它是什么键,这可能会让其他人有点困惑。是的,这就是问题所在,我实际上不知道。我在这个已经在进行的项目中工作,在工作时遇到了这个问题,我不太理解这个问题的必要性。我同意你的看法,这是没有必要的,而且会让人感到困惑。无论如何,谢谢你的时间和关注。哦,好的,这很有意义。非常感谢。我再问你几件事。这是一种好的做法吗?我的意思是用一个值命名外键?如果是,这个数字是由某个命令生成的?@CristhoferAlencar有什么特别的理由用值来命名外键吗?我不太确定这是否是一个真正好的练习,因为你不可能仅仅通过看名字就知道它是什么键,这可能会让其他人有点困惑。是的,这就是问题所在,我实际上不知道。我在这个已经在进行的项目中工作,在工作时遇到了这个问题,我不太理解这个问题的必要性。我同意你的看法,这是没有必要的,而且会让人感到困惑。无论如何,谢谢你的时间和关注-alencar@cristhofer-阿伦卡尔