Laravel belongsToManyのattach()の挙動について

標準

Inserting Related Models – Laravel Documentation

LaravelのEloquentでのお話。belongsToManyでリレーションを作って、attachで関連を追加するぜーとしてみてところ、同じIDをいれても再現なく関連が追加される。

コードを確認すると、存在チェックを行わず単純にInsertしているだけだった。

存在チェックを行った上で関連を追加するには、syncメソッドの第2引数をfalseにして呼び出すとよいぽぃ。(他に適切なやり方があれば教えてください。

$post->tags()->sync([$id], false);

なお、syncの第1引数は配列である必要がある。また、falseの指定を忘れると、指定以外の関連を削除してくれる(こっちが本来の挙動)ので気をつけるべし。

コメントを残す

Page optimized by WP Minify WordPress Plugin