1. ホーム
  2. php

[解決済み] Laravel Eloquent - アタッチとシンクの違い

2023-08-02 22:47:50

質問

とはどのような違いがあるのでしょうか? attach()sync() をLaravel 4のEloquent ORMで使うことはできますか?いろいろ探してみたのですが、見つかりませんでした

どのように解決するのですか?

attach()を実行します。

  • 多対多のリレーションを扱うときに関連するモデルを挿入する
  • 配列パラメータが期待されない

$user = User::find(1);
$user->roles()->attach(1);

sync():

に似ていて attach() メソッドと同様に sync() メソッドは、関連するモデルを添付するために使用されます。ただし、主な違いは

  • sync() ピボット・テーブルに配置する ID の配列を受け取ります。
  • 次に 最も重要 で、同期メソッドは、配列にモデルが存在しない場合、ピボット・テーブルからデータを削除し、ピボット・テーブルに新しい項目のみを挿入します。

例を示します。

ユーザ名

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 をテーブルに挿入します。

user_roleテーブル

id user_id role_id
1 12 1
3 12 2
4 12 3