私は3つのモデルがあるとしましょう:Parent
、Child
、GrandChild
です。親hasMany()
子供、子供hasMany()
グランドチャイルド。今度は私が->delete()
親モデルを使用すると、子モデルとGrandChildモデルは影響を受けません。しかし、私はまた、関連するモデルを削除したい。私は私のコントローラのdestroy()
方法でこれをやってみました:ラーベルモデル削除階層
$parent->childs->grandchilds()->delete();
$parent->childs()->delete();
$parent->delete();
が、それは私がChild
モデルのhasMany()
関係を設定しているにもかかわらず、存在しないgrandchilds()
BadMethodCallException
、方法をスローします。
外部キー制約を設定することなく、関連するすべてのモデルをうまく削除するにはどうすればよいですか?アプリケーションには3つ以上の関連するモデルが存在するため、この時点ですべての移行ファイルが非常に時間がかかります。例えば
もし私が一層深くする必要があるならば(あるいは後のある時点で)、どうすればhasManyThroughを設定できますか?さて、私は 'GreatGrandChild'モデルを持っているとしましょう。 – Eisenheim
''削除カスケード 'なしでそれを行う良い方法はありません。外来の鍵はあなたの親友です。長期的には時間を節約し、パフォーマンスを向上させます。 – devk