一列上的两个外键

Mar*_*ten 4 mysql foreign-key-relationship laravel

我在 MySQL 中有两个表,命名manualslibrary. 两者都可以上传文件,所以我制作了第三个表,名为files. 在文件中,我有一列 parent_id。我可以将 parent_id 设为手册和库中的外键吗?

我正在使用 Laravel (4.2) 并尝试过这个,但它不起作用:

$table->integer('parent_id')->unsigned();
$table->foreign('parent_id')->references('id')->on('library');
$table->foreign('parent_id')->references('id')->on('manuals');
Run Code Online (Sandbox Code Playgroud)

Mar*_*ark 5

不可以。您不能在同一列上有多个外键。从 MySQL 文档:

MySQL 支持表中一列和另一列之间的外键引用。(列不能有对自身的外键引用。)在这些情况下,“子表记录”实际上是指同一表中的相关记录。

这样做的原因是 MySQL 将无法区分父级。Laravel(或任何其他框架)不提供解决此问题的方法。

之前以略有不同的形式提出了这个问题。示例:可以将一列引用为多个外键