[解決済み] Laravelがピボットテーブルに複数のレコードを追加しないようにする方法
2022-05-16 10:59:37
質問
多対多のリレーションシップを設定し、動作させていますが、カートに商品を追加するために使用しています。
$cart->items()->attach($item);
ピボット・テーブルに項目が追加されますが、ユーザーがリンクを再度クリックして、既に追加した項目を追加すると、ピボット・テーブルに重複した項目が作成されます。
レコードがまだ存在しない場合にのみ、ピボット・テーブルにレコードを追加する内蔵の方法はありますか?
そうでない場合、一致するレコードがすでに存在するかどうかをピボット・テーブルで確認するにはどうすればよいですか。
どのように解決するのですか?
このような非常に簡単な条件を書くことで、既存のレコードがあるかどうかを確認できます。
if (! $cart->items->contains($newItem->id)) {
$cart->items()->save($newItem);
}
あるいは、データベースに単一性条件を追加すると、ダブレットを保存しようとしたときに例外がスローされます。
Barryvdhのもっと簡単な回答も見てみてください。
関連
-
[解決済み】stdClassクラスのオブジェクトが文字列に変換されない。
-
[解決済み】Apache + PHPで「ヘッダの前にスクリプトの出力が終了する」件
-
[解決済み】Chrome net::ERR_INCOMPLETE_CHUNKED_ENCODING エラーが発生しました。
-
[解決済み】file_get_contents( )が動作しない。
-
[解決済み] [Solved] Fatal error: メンバ関数 query() の null への呼び出し。
-
[解決済み] Uncaught SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み] PHPの配列を別の配列にコピーする関数はありますか?
-
[解決済み] libapache2-mod-php7 パッケージの場所がわからない
-
[解決済み] MySQLで'insert if not exists'を行うにはどうしたらいいですか?
-
[解決済み] Laravel Eloquentを使用して複数のWhere句クエリを作成する方法?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】PHP - 構文エラー、予期しないT_CONSTANT_ECAPSED_STRING [閉店].
-
[解決済み】++と*+の意味は何ですか?
-
[解決済み】新しいPHPMailerはPHPMailerAutoload.phpが必要?
-
[解決済み】pdo - 非オブジェクトのメンバー関数prepare()への呼び出し【重複】。
-
[解決済み】PHPからPythonスクリプトを実行する
-
[解決済み] 警告:mysqli_fetch_array()は、パラメータ1がmysqli_resultであることを期待する、オブジェクトはで指定された。
-
[解決済み】PHPの予期しないT_VARIABLEとは何ですか?
-
[解決済み】既に開始されているPHPセッション【重複あり
-
[解決済み] Forbidden :このサーバーの /phpmyadmin にアクセスする権限がありません。
-
[解決済み] mysql_field_nameを新しいmysqliに変更します。