[英]Laravel dropForeign: how is the argument determined?
有人可以解释一下program_segments_program_id_foreign
的命名约定发生了什么。 我想了解为什么需要它。 函数调用指定了表名,并且我们已经删除了fk,并且列名是program_id ...为什么不只是dropForeign('program_id')
? Laravel使用需要这种格式的特殊名称做什么? 是数据库约定还是其他? 我还在学习,谢谢!
Schema::table('program_segments', function(Blueprint $table) {
$table->foreign('program_id')->references('id')->on('programs')
->onDelete('no action')
->onUpdate('no action');
Schema::table('program_segments', function(Blueprint $table) {
$table->dropForeign('program_segments_program_id_foreign');
实际上,这取决于您使用的DBMS,在MySQL中,外键约束名称对于数据库是全局的,并且作为框架,Laravel必须选择一种约定来支持所有DBMS。 而且,如果没有约定,当您遇到约束违例(更新,删除...)时,很难找到外键的关联位置(尤其是巨大的数据库和复杂的查询)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.