Laravel如何从非主键创建外键约束

时间:2017-11-23 02:09:13

标签: php mysql laravel laravel-5.5

我有一个名为header

的表格
$table->increments('id');
$table->integer('restaurant_number')->unsigned();
$table->integer('transaction_id')->unsigned()->unique(); <-- Right here

docs上说

  

Laravel还支持创建外键约束,   用于强制数据库级别的引用完整性。   例如,让我们在posts表上定义一个user_id列   引用users表上的id列:

但是在我的details表上,我引用了不是主键的header_id中的transaction_id,我收到错误此错误(errno: 150 "Foreign key constraint is incorrectly formed")。如何从非主要

引用它
$table->increments('id');
$table->integer('restaurant_number')->unsigned();
$table->integer('transaction_id')->unsigned()->nullable();
$table->foreign('transaction_id')->references('transaction_id')->on('header');

1 个答案:

答案 0 :(得分:1)

也许问题是因为两个表都是完全相同的类型。我可以看到,在第二个表中,该字段可以为空,而在第一个表中则不是。也许这就是问题