1. ホーム
  2. php

[解決済み] Laravelがピボットテーブルに複数のレコードを追加しないようにする方法

2022-05-16 10:59:37

質問

多対多のリレーションシップを設定し、動作させていますが、カートに商品を追加するために使用しています。

$cart->items()->attach($item);

ピボット・テーブルに項目が追加されますが、ユーザーがリンクを再度クリックして、既に追加した項目を追加すると、ピボット・テーブルに重複した項目が作成されます。

レコードがまだ存在しない場合にのみ、ピボット・テーブルにレコードを追加する内蔵の方法はありますか?

そうでない場合、一致するレコードがすでに存在するかどうかをピボット・テーブルで確認するにはどうすればよいですか。

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

このような非常に簡単な条件を書くことで、既存のレコードがあるかどうかを確認できます。

if (! $cart->items->contains($newItem->id)) {
    $cart->items()->save($newItem);
}

あるいは、データベースに単一性条件を追加すると、ダブレットを保存しようとしたときに例外がスローされます。

Barryvdhのもっと簡単な回答も見てみてください。