创建复合外键时Laravel错误

时间:2014-10-03 19:21:54

标签: php mysql laravel eloquent composite-primary-key

我需要建立一个名为'幻灯片的表格。它包含两列名为' id'和' work_id'。 ID不是AUTO_INCREMENT整数,因为我需要将数字作为幻灯片中的索引。

这是运行' php artisan migrate'时显示的错误: Error

这是我的代码:

Schema::create('slides', function(Blueprint $table) {
    $table->integer('id');
    $table->integer('work_id');

    $table->primary(['id', 'work_id']);
    $table->foreign('work_id')->references('id')->on('works');
});

这是我的作品的结构'表: Works Table

这就是“幻灯片”的结构。尽管发生错误仍会生成的表: Slides Table

我不理解错误消息,因为我对SQL不是很流利,所以有人能告诉我代码导致输出此错误的错误是什么?感谢。

2 个答案:

答案 0 :(得分:1)

我不知道Eloquent如何处理复合键。也就是说,您的错误消息来自MySQL。隐秘错误150通常与错误形成的外键约束有关。

如果您的情况如上,则work_id中的slides外键与您尝试匹配的id的外键不同。虽然两列都是int,但其中一列是int(10),另一列是int(11)。它还显示一个是UNSIGNED,另一个是签名。

如果你可以摆弄你的迁移,那么两个列都是相同的,你应该能够解决这个特定的外键问题。

答案 1 :(得分:0)

我脑海中唯一可能出现问题的是你的主要钥匙。

您应该尝试更改:

$table->primary(['id', 'work_id']);

$table->primary('id');

检查它现在是否正常工作

相关问题