Laravel Eloquent插入记录两次

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel Eloquent插入记录两次相关的知识,希望对你有一定的参考价值。

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

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

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

答案

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

另一答案

用户可能会尝试两次点击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分钟,或者您可以根据需要更改值。

另一答案

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

以上是关于Laravel Eloquent插入记录两次的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 laravel eloquent ORM 插入 PostgreSQL

Laravel Eloquent Eager Loading:加入同一张表两次

表单没有正确地将数据插入数据库 [Laravel][Eloquent]

使用 Laravel Eloquent 获取最后插入的 ID

在最近的关系记录中搜索 - Laravel (Eloquent)

laravel 基础教程 —— Eloquent