Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在laravel迁移中是否需要定义外键约束?_Php_Mysql_Laravel - Fatal编程技术网

Php 在laravel迁移中是否需要定义外键约束?

Php 在laravel迁移中是否需要定义外键约束?,php,mysql,laravel,Php,Mysql,Laravel,我见过许多人在编写迁移时没有定义外键约束,包括jeffrey way在他的文章中。比如说, Schema::create('post',function(Blueprint $table){ $table->id(); $table->integer('user_id')->index(); $table->text('body'); // }); 在这里,没有定义如下所示的外键约束 $table->foreign('user_id

我见过许多人在编写迁移时没有定义外键约束,包括jeffrey way在他的文章中。比如说,

Schema::create('post',function(Blueprint $table){
    $table->id();
    $table->integer('user_id')->index();
    $table->text('body');
    //
});
在这里,没有定义如下所示的外键约束

$table->foreign('user_id')->references('id')->on('users');

我总是定义外键,因为这样可以维护表之间的关系和完整性。但是我看过很多视频,他们没有定义外键。这背后有什么具体的原因吗?

没有必要,但我们应该为where()上使用的所有内容编制索引。是的,您应该创建外键,这样您就可以创建索引并链接表。

这不是必需的,但我们应该为where()上使用的所有内容编制索引。因此,是的,您应该创建外键,这样您就可以创建索引并链接表。

不使用这些键的唯一原因是如果您不需要数据库中的一致性,或者您确信您的框架/代码不容易出现这些引用错误。但正如视频中所示,外键不必定义为在laravel应用程序中具有功能关系。

不使用这些键的唯一原因是,如果您不需要数据库中的一致性,或者您确信您的框架/代码不容易出现这些引用错误。但如视频中所示,外键不必定义为在laravel应用程序中具有功能关系。

外键约束使数据库保持一致。我不知道还有什么别的方法可以像层叠一样。你也应该读一下。考虑一个删除父元素的场景,子元素只是坐在某个相关表中。呵呵!现在,这可能会破坏你的应用程序


PS:这不是必需的,但应该这样做。

外键约束使您的数据库保持一致。我不知道还有什么别的方法可以像层叠一样。你也应该读一下。考虑一个删除父元素的场景,子元素只是坐在某个相关表中。呵呵!现在,这可能会破坏你的应用程序


附言:这不是必须的,但应该做。

是的,没错。尽管我们可以在不将列定义为外键的情况下对其进行索引/yes-true。尽管我们可以在不将列定义为外键的情况下对其进行索引/