При двойном клике firstOrCreate создал две корзины одному пользователю
$cart = Cart::firstOrCreate(['user_id' => $user->id]);
Уникального индекса по user_id нет. Пользователь дважды быстро нажал «В корзину», два запроса выполнились параллельно, и у него появились две корзины — товары разложились по разным. Как исправить?
- Уникальный индекс и обработка конфликта при вставке
- Обернуть firstOrCreate в транзакцию без индекса
- Добавить usleep() перед firstOrCreate
- Блокировать кнопку на фронтенде, ничего не меняя на сервере
