Laravel API 防止多次插入/更新
P粉864594965
P粉864594965 2024-03-27 11:51:51
[PHP讨论组]

我有一个在我的 NoticeController 上发送通知的方法。

问题是它无法检测 API 端点是否被多次调用(例如从客户端提交双重表单)或者通知是否已发送给学生。当我只需要插入一次时,它会导致数据库上出现重复记录。

 public function sendStudentNotice(Request $request, Registrant $registrant){

        $validated = $request->validate([
            'type' => 'required|in:success,error,warning,info',
            'message' => 'required|string'
        ]);

        //This is inserting new record each call
        $registrant->enrollmentLogs()->create($validated);

        return response()->json(['message' => 'A notice has been sent successfully!']);
    }

如果我可以保护控制器上的所有 storeupdate 方法来防止此类问题,那就更好了。

P粉864594965
P粉864594965

全部回复(1)
P粉775723722

您可以使用 ->firstOrCreate([],[]) 方法而不是 create,它会首先检查数据库中第一个参数中给出的所有字段的记录,然后然后,如果它没有找到它,它将与第二个参数中的数据一起创建一个。

给你的例子:

$registrant->enrollmentLogs()->firstOrCreate($validated, []);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号