Laravel 5.1を使用してアプリケーションを作成しました。このアプリケーションは駐車スペースのためのものです。データベースに3つの利用可能なスロット(午前、午後、終日)を作成することによって、スペースを「プロビジョニング」します。Laravel 5.1が複数の重複レコードをデータベースに入力する
問題は、ページの高速リフレッシュでスペースが2回プロビジョニングされるため、6スロットがデータベースに入力されることです。
ただし、5秒後にページを更新すると、それ以上のレコードは入力されません。以下のif文は動作しているようですが、ページ/接続がすばやく更新されたときではありません。
foreach($bays as $bay) {
if(!BookingDates::where('date', $date)->where('parking_bay', $bay->number)->count()) {
BookingDates::insert(['parking_bay' => $bay->number, 'date' => $date, 'slot' => 'Morning', 'time' => '7am - 1pm', 'status' => 'Available', 'created_at' => DB::raw('now()')]);
BookingDates::insert(['parking_bay' => $bay->number, 'date' => $date, 'slot' => 'Afternoon', 'time' => '1pm - 7pm', 'status' => 'Available', 'created_at' => DB::raw('now()')]);
BookingDates::insert(['parking_bay' => $bay->number, 'date' => $date, 'slot' => 'All Day', 'time' => null, 'status' => 'Available', 'created_at' => DB::raw('now()')]);
}
}
なぜこのようなことが起こるのでしょうか?
可能性のあるデータベースの競合を確認するために、リクエスト前にフィルタを追加することはできます – IlGala
しかし、なぜ何度も入力されているのか分かりません。どこかに説明はありますか?私はこれが可能だとは決して考えなかった。 – V4n1ll4
あなたのルートとその取り扱い方法を記入してください(クロージャおよび/またはコントローラのアクション)。予約が入力されている別のルートに投稿している場合は、このようなことは起こりません。 – Bogdan