我在MySQL中有两个表,名为manuals
和library
。两者都可以上传文件,所以我创建了第三个表,名为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');
答案 0 :(得分:2)
没有。您不能在同一列上有多个外键。来自MySQL文档:
MySQL支持表中一列与另一列之间的外键引用。 (列不能有自己的外键引用。)在这些情况下,“子表记录”实际上是指同一个表中的依赖记录。
原因是MySQL无法区分父母。 Laravel(或任何其他框架)不提供解决此问题的方法。
此问题之前以略有不同的形式提出过。示例:it is possible to reference one column as multiple foreign keys