attach()
とsync()
のLaravel 4のEloquent ORMの違いは何ですか?
attach():
例:
$ user = User :: find(1); $ user-> roles()-> attach(1);
sync()
attach()
メソッドに似ています。 sync()
は、関連するモデルをアタッチするためにも使用します。ただし、主な違いは次のとおりです。
例:
ser_role
id user_id role_id 1 12 1 2 12 5 3 12 2
$ user = User :: find(12); $ user-> roles()-> sync(array(1、2、3));
上記の操作により削除されます:
id user_id role_id 2 12 5
そして、role_id 3
をテーブルに挿入します。
ser_roleテーブル
id user_id role_id 1 12 1 3 12 2 4 12 3
さらにシンプルにするために:
attach
関数は、ピボットテーブルにのみレコードを追加します。
sync
関数は、現在のレコードを新しいレコードに置き換えます。これは、モデルの更新に非常に役立ちます。
例:
タグIDが[1,2,3]である多くのタグが添付された作成済みの投稿があると仮定します。
また、ユーザーは投稿とそのタグを更新することができます。
ユーザーは新しいタグID [3,4,5]を送信します。
sync
関数を使用する場合、投稿の新しいタグは[3,4,5]のみになります。
ただし、attach
関数を使用すると、投稿の新しいタグは[1,2,3,4,5]になります。