laravel中的firstOrCreate方法实现记录不存在则新建的方法:首先将attribures作为查询条件,在数据表中查询记录;然后将参数values插入到数据表中;最后用firstOrCreate方法返回记录即可。

laravel firstOrCreate怎么实现记录不存在则创建新记录?
firstOrCreate的使用方法
firstOrCreate方法是laravel框架中操作数据表很常用的一个方法,在某些场景下他将变得很有用可以极大的简化代码
有这样一个场景:我希望去数据表中按条件查询一条记录,如果这条记录存在就返回这条记录,然后更新记录中的某个字段,
如果记录不存在我需要创建一条新的记录?

从源码中我们可以看出firstOrCreate这个方法接收两个数组作为参数,第一个参数是查询的条件,第二个参数是要新增的数据,
也是就是说firstOrCreate这个方法会先尝试将$attribures作为查询条件,去数据表中查询一条记录,如果在数据表中
没有获取到记录则将第二个参数$values作为一条新记录插入到数据表中,
最后firstOrCreate方法会返回记录本身,一个结果集对象,
值得注意的是 !
在firstOrCreate执行之后我们如何确认这个方法是查询到了记录还是执行了新增操作?
为此框架为我们提供了一个wasRecentlyCreated属性来确认firstOrCreate是否执行了新增操作
下面来看一个使用案例:
我需要从数据表查询当天网站的访问人数,如果查询到记录就将访问人数+1,
如果没有查询到就新增一条记录并将访问人数设置为1
//查询条件
$where = ['created_at' => date('Y-m-d')];
//如果没有查询到记录,则将这条数据添加到数据表中
$data = $where + ['count' => 1];
//查询到了记录则获取,没有查询到则新增一条新记录
$log = Log::firstOrCreate($where, $data);
//如果查询到了记录count字段+1
if (!$log->wasRecentlyCreated) {
return $log->increment('count');
}
return $log;推荐教程:《laravel》
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号