Laravel 5.2中数据透视表的Foregin键约束

时间:2016-08-12 17:26:00

标签: php laravel-5 foreign-keys

关于外键和laravel的模式构建器,我有一个相当简单而愚蠢的问题(或者更确切地说是对外键应该如何工作的误解)。

我有以下3个表格:

蓝图

  1. ID
  2. 名称
  3. 其他一些领域
  4. 集合

    1. ID
    2. 描述
    3. 其他一些领域
    4. BlueprintCollection

      1. ID
      2. blueprint_id
      3. collection_id
      4. 我想创建一个外键,将蓝图的id链接到BlueprintCollection的blueprint_id,并为Collection做同样的事情。

        我的理解是我应该做以下

        $table->foreign('blueprint_id')->references('id')->on('blueprint_table');
        

        使用->onDelete('cascade->onUpdate('cascade');我不必这样做,但我希望它是这样的。

        这应该在BlueprintCollection表中完成。

        但是,如果我正确理解这一点,如果包含在蓝图上引用blueprint_id的{​​{1}}的行将被删除,它将删除Blueprint表中的条目。

        显然,因为它是一个联结表我不想这样做,而是反过来。如果删除了Blueprint中的条目,我想删除BlueprintCollection表中的条目。

        我是否正确理解了这一点?

1 个答案:

答案 0 :(得分:0)

尝试下一步:

$table
    ->foreign('blueprint_id')
    ->references('id')
    ->on('blueprint_table')
    ->onDelete('cascade')
    ->onUpdate('cascade');