laravelでRDB(複数のテーブル)を用いたレコード管理をしています。
データを削除しようとしたところ、以下のエラーが発生しました。
・destroyアクションのコード
public function destroy($id) { Category::find(Drill::find($id)->category_id)->delete(); Problem::where('drill_id', $id)->first()->delete(); Drill::find($id)->delete(); return redirect('/drills')->with('flash_message', ![イメージ説明](0f96e3165ff1a0480c8fee557edf7b51.png)leted')); }
・テーブルの構成(図のライン通りにリレーションを張っています)
外部キー制約を設けている場合、親テーブルと紐づいたカラムがあるため(テーブル同士の整合性を保つため)削除できないという内容です。
外部制約がないといけない、ということではないのですが、Rubyでは同様のケースにてオプションを設定してDELETEを実行できるようです。
laravelにもそういったオプションがあるかも?と思ってリファレンスに目を通したのですが、hasMany/destroy/DELETEに関するページでそれらしき記述はみられませんでした。
リレーションを張った状態で複数のテーブルに跨がるレコードを削除するにはどうすればよろしいでしょうか?
アドバイス、よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/02 15:14
2019/12/02 15:20
2019/12/03 03:19