nishimura.clubnishimura.club

Laravelでリレーションのあるレコードを全て削除する

作成日
2021-07-19
更新日
2021-07-19

前提

  • 対象のモデルにhasMany()belongsTo()が定義されていること

基本形

$user = User::find(1); $user->posts()->each(function($post) { $post->delete(); });

もしくは

$user = User::find(1); $user->posts()->delete();

応用形

Surveyモデルを削除した際に、一気通貫でAnswerSetまで削除する。

モデル

サーベイ機能

コード

DB::beginTransaction(); try { $survey = Survey::find(1); $survey->survey_schedules()->each(function($survey_schedule) { $survey_schedule->survey_answer_sets()->each(function($survey_answer_set) { $survey_answer_set->survey_answers()->each(function($survey_answer) { $survey_answer->delete(); }); $survey_answer_set->delete(); }); $survey_schedule->delete(); }); $survey->delete(); DB::commit(); } catch (\Exception $e) { echo($e->getMessage()); DB::rollback(); }

参考

Related

Tags

Laravel

Share