Laravel Eloquent插入记录两次

问题描述 投票:0回答:3

我有2个模型:CustomersAttendance(关系是One - Many)。当客户访问要检入的URL时,我尝试在attendances表中插入记录。

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

但是我不知道为什么上面的代码插入2次而不是1次,有时它正确插入1次。

php database laravel eloquent
3个回答
1
投票

创建一个记录/存储退房时间的功能。然后放入一个If in check-in函数来检查用户是否还没有签出,而不是再次办理登机手续。如果你没有检查;双击,页面刷新全部将触发多次签到另一个选项是将签到与登录事件相关联,您只需要为登录事件创建一个事件监听器。


1
投票

用户可能会尝试两次点击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
投票

您可能有一个提交按钮,允许用户双击调用它两次。

© www.soinside.com 2019 - 2024. All rights reserved.