Laravel Eloquent вставил запись дважды - PullRequest
0 голосов
/ 13 октября 2018

У меня есть 2 модели: Customers и Attendance (отношение один - много).Я пытался вставить запись в таблицу attendances, когда клиент получает доступ к URL-адресу для регистрации.

$customer = Customer::find($id);
$customer->attendances()->create(['checked_in_at' => now()]);

Однако я не знаю, почему указанный выше код вставляется 2 раза вместо 1 раза, а иногдаон вставлен правильно 1 раз.

Ответы [ 3 ]

0 голосов
/ 13 октября 2018

Создайте функцию для регистрации / хранения времени выезда.Затем добавьте функцию «If in check-in», чтобы проверить, не был ли пользователь еще не зарегистрирован, и не регистрируйте снова.Если вы не ставите чек;Двойной щелчок, страница обновляется, все запускают несколько регистраций. Другой вариант - связать регистрацию с событием входа в систему, вам просто нужно сделать прослушиватель событий для события входа в систему.

0 голосов
/ 13 октября 2018

Пользователь может попытаться дважды нажать на URL (по какой-либо причине, плохое подключение к Интернету или что-то еще)

Вы можете выполнить другой запрос, чтобы убедиться, что у пользователя не будет дублированных строк или двух посещений.за короткий промежуток времени.

Вы можете выполнить запрос, подобный этому

$last_attendance = $customer->attendances()->orderBy('checked_in_at', 'DESC')->first();

if(Carbon::now()->diffInMinutes($last_attendance->checked_in_at) > 5){
    $customer->attendances()->create(['checked_in_at' => now()]);
}

Это позволит убедиться, что для вставки новой записи потребуется не менее 5 минут, или вы можете изменитьзначение, как вы хотите.

0 голосов
/ 13 октября 2018

Возможно, у вас есть кнопка отправки, позволяющая пользователю дважды щелкнуть ее дважды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...