【发布时间】:2018-10-02 02:12:48
【问题描述】:
我知道严格来说这不是最佳实践,但在 Laravel 中设置外键始终是一个巨大的痛苦。
像这样简单的事情可能在 70% 的情况下都失败了。有时有充分的理由,有时只是……因为感觉像。自然也没有有意义的错误信息。
Schema::table('accounts', function(Blueprint $table){
$table->integer('package_id')->unsigned();
$table->foreign('package_id')->references('id')->on('packages')->onDelete('set null');
});
现在,应用程序运行良好,所有关系都正常在数据库中设置外键,那么完全忽略它们有什么实际危害吗?
【问题讨论】:
-
该设置失败是因为您在 Non Nullable 字段(package_id)上使用了
Set Null。使用$table->integer('package_id')->unsigned()->nullable()或对onDelete使用不同的约束,例如onDelete('cascade')。 -
-1 因为问题是在提倡编程中的不良做法和懒惰。而不是问这个,OP 应该搜索材料,看看在 DB 中设置良好的关系有什么好处。非常颠倒的思维方式,我会说从懒惰来看,阅读这篇文章可能会得出什么结论。