Laravel dropForeign:这个论点是如何确定的?

时间:2015-01-23 18:06:28

标签: laravel

有人可以用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');

1 个答案:

答案 0 :(得分:0)

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