laravel中的firstOrCreate方法怎么实现记录不存在则新建

PHPz
发布: 2016-06-06 20:30:53
原创
4640人浏览过
laravel中的firstOrCreate方法实现记录不存在则新建的方法:首先将attribures作为查询条件,在数据表中查询记录;然后将参数values插入到数据表中;最后用firstOrCreate方法返回记录即可。

laravel中的firstOrCreate方法怎么实现记录不存在则新建

laravel firstOrCreate怎么实现记录不存在则创建新记录?

firstOrCreate的使用方法

firstOrCreate方法是laravel框架中操作数据表很常用的一个方法,在某些场景下他将变得很有用可以极大的简化代码

有这样一个场景:我希望去数据表中按条件查询一条记录,如果这条记录存在就返回这条记录,然后更新记录中的某个字段,

如果记录不存在我需要创建一条新的记录?

 企业微信截图_15920156702275.png

从源码中我们可以看出firstOrCreate这个方法接收两个数组作为参数,第一个参数是查询的条件,第二个参数是要新增的数据,

也是就是说firstOrCreate这个方法会先尝试将$attribures作为查询条件,去数据表中查询一条记录,如果在数据表中

没有获取到记录则将第二个参数$values作为一条新记录插入到数据表中,

最后firstOrCreate方法会返回记录本身,一个结果集对象,

 

Vheer
Vheer

AI图像处理平台

Vheer 260
查看详情 Vheer

值得注意的是 ! 

在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

相关标签:
php
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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