有人可以用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');
答案 0 :(得分:0)
实际上它取决于您使用的DBMS,在MySQL中,外键约束名称对数据库是全局的,并且作为框架,Laravel必须选择一种约定来支持所有DBMS。而且,如果没有约定,当你遇到约束违规(更新,删除...)时,很难找到外键关联的位置(特别是对于庞大的数据库和复杂的查询)。