LaravelでonDelete('cascade')を書けば勝手にリレーション先の子供が削除されるわけではない
今回発見があったので備忘録。
usersテーブルに紐づくpostsテーブルがあったとして、マイグレーションファイルには
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
こう書けば、勝手に削除されると思ってました。。。
この場合で削除されるのは、親(User)を物理削除した場合のみ。
論理削除だと、削除されないようなのです。
自動で削除してくれるのは、物理削除によって親が完全にDB上から消えた場合であって
論理削除のようにまだデータが残っている場合、DBは親が削除されたとはみなさないようです。
参考
Author And Source
この問題について(LaravelでonDelete('cascade')を書けば勝手にリレーション先の子供が削除されるわけではない), 我々は、より多くの情報をここで見つけました https://qiita.com/dorayaki_9696/items/b09004a5b0a2542cb8a8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .