Eloquent DB 多対多のリレーション

多対多リレーションの操作メソッド (attach, sync, syncWithoutDetaching) の違いを整理し、Google Docs やチーム共有資料にもそのまま使えるよう整形したバージョンです👇


✅ Eloquent 多対多リレーション操作の違い(まとめ)


📌 メソッドごとの動作まとめ

メソッド動作の内容
attach()指定したIDを中間テーブルに追加。既存データは削除しない。重複は無視される。
sync()完全に置き換え。指定したIDのみ残し、それ以外の既存データは削除される。
syncWithoutDetaching()追加のみ。指定したIDを追加するが、既存データはそのまま保持。重複はスルー。

🧠 覚えやすいポイント

1. attach()

• ✔ 「追加」だけ

• 削除はされない

• 同じデータを2回追加しても問題なし(重複しない)


2. sync()

• 🔁 「置き換え」

• 渡したID「だけ」を残して、他は削除する

• 今あるデータをすべて上書きしたいときに使う


3. syncWithoutDetaching()

• ➕ 「足りないものを追加」

• 既存のものはそのまま

• 渡したIDがすでにある場合はスルーして追加しない


💡 具体的な使い分け

シーンの例使うメソッド
とにかく必要なデータを追加したいだけattach()
今ある関連をすべて一度リセットして更新したいsync()
今ある関連を保ったまま、足りないのだけ追加したいsyncWithoutDetaching()

✅ まとめイメージ

• 🧩 attach: 今のに足すだけ

• 🔄 sync: 今のを全部入れ替え

• ➕ syncWithoutDetaching: 足りないものを足すだけ(重複は無視)


この表とまとめさえ覚えておけば、**多対多リレーションの操作で迷うことはなし!**💪

他にも detach() や toggle() があるので、必要なら追加説明もできるよ!

コメント

タイトルとURLをコピーしました