まったりぺちばーのメモ帳

知識を高めるべく、様々なものを勉強中。 そのアウトプットの場にできればいいなと思っています。

CakePHP3: MigrationでForeignKeyのオプションを指定する

 今回も自分用メモになります。

 最近CakePHP3の習得のために、1年くらい前にCodeigniter3で作成したものをCakePHP3で再作成しています。  機能を比較しながらの為、それぞれのフレームワークのいいところ・悪いところが見えてきます。  やっぱりCodeigniterは軽かったんだな~とか、CakePHPは学習コスト結構かかるけど便利機能が多くて覚えることができたら今までの苦労がなくなるな~とか。

 そんな中、テストを作成していたところ全てのテーブルを消してしまうポカをやらかし、この機会にMigrationで作りなおそうとしたところ外部キーのオプション指定の設定が見つかりにくかったので( ..)φメモメモ

  • Migrations/xxxx_xxx【テーブル名】.phpにて
public function change(){
    $this->table('テーブル名');
    
    (中略)

    $table->addForeignKey('このテーブルのカラム名', '親テーブル名', '親テーブルのカラム名', [

        // ON DELETEの指定。指定しない場合は「restrict」
        'delete' => 'cascade',

        // ON DELETEの指定。指定しない場合は「restrict」
        'update' => 'cascade', 
    ]);

}

メソッドの説明で第4引数のoptionsに軽く説明は載っているのですが

In $options you can specify on_delete|on_delete = cascade|no_action .., on_update, constraint = constraint name.

↑と書かれているので紛らわしかったです。(キーを「on_~」に指定すると動いてくれませんでした)

ブログのタイトル通り、本当に短文のメモばかりになってきた(;´・ω・)