Eloquent中一些其他的create方法
firstOrCreate/ firstOrNew#
还有两种其它方法,你可以用来通过属性批量赋值创建你的模型:firstOrCreate 和firstOrNew。firstOrCreate 方法将会使用指定的字段/值对,来尝试寻找数据库中的记录。如果在数据库中找不到模型,则会使用指定的属性来添加一条记录。
firstOrNew 方法类似 firstOrCreate 方法,它会尝试使用指定的属性在数据库中寻找符合的纪录。如果模型未被找到,将会返回一个新的模型实例。请注意 firstOrnew 返回的模型还尚未保存到数据库。你需要通过手动调用save 方法来保存它:
// 通过name属性检索航班,当结果不存在时创建它...
$flight = App\Flight::firstOrCreate(['name' => 'Flight 10']);
// 通过name属性检索航班,当结果不存在的时候用name属性和delayed属性去创建它
$flight = App\Flight::firstOrCreate(
['name' => 'Flight 10'], ['delayed' => 1]
);
// 通过name属性检索航班,当结果不存在时实例化一个新实例...
$flight = App\Flight::firstOrNew(['name' => 'Flight 10']);
// 通过name属性检索航班,当结果不存在的时候用name属性和delayed属性去实例化一个新实例
$flight = App\Flight::firstOrNew(
['name' => 'Flight 10'], ['delayed' => 1]
);
updateOrCreate#
其次,你可能会碰到模型已经存在则更新,否则创建新模型的情形,Laravel 提供了一个 updateOrCreate 方法来一步完成该操作,类似 firstOrCreate 方法, updateOrCreate 方法会持久化模型,所以无需调用 save() :
// If there's a flight from Oakland to San Diego, set the price to $99.
// If no matching model exists, create one.
$flight = App\Flight::updateOrCreate(
['departure' => 'Oakland', 'destination' => 'San Diego'],
['price' => 99]
);
参考地址:https://d.laravel-china.org/docs/5.5/eloquent#mass-assignment
Eloquent中一些其他的create方法的更多相关文章
- ThinkPHP中I('post.')与create()方法的对比
简要归纳: 1.二者都可用来接收post表单提交的数据. 2.I('post.')方法可直接接收赋值给变量如$post=I('post.'),create()方法源于父类模型封装,需先实例化父类模型, ...
- 解决ThinkPHP的Create方法失效而没有提示错误信息的问题
ThinkPHP中的数据创建Create方法是一个非常有用的功能,它自动根据表单数据创建数据对象(在表字段很多的情况下尤其明显) 但有时候该方法可能并未按照你期望的来工作,比如方法不工作而且还没有提示 ...
- 织梦系统中出现DedeTag Engine Create File False提示原因及解决方法
今天更新网站时dedecms系统时,遇到一个问题:DedeTag Engine Create File False 出现这样的提示. 其实这也不算是什么错误,我个人觉得最重要的一点就是根目录下没有给 ...
- ThinkPHP第九天(在Admin分组中配置__PUBLIC__,$POST异步传输,import使用方法,验证码点击刷新方法,Create方法作用)
1.项目分组之后,后台模板的公用文件一般放置在Tpl/Admin/Public中,这样子在替换模板路径时候如果还用__PUBLIC__时为了不与前台冲突,应该在Admin/config.php中配置一 ...
- ThinkPHP中create()方法自动验证表单信息
自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证. 原理: create()方法收集表单($_POST)信息并返回,同时触发表单自动验证 ...
- thinkphp中神奇的create()方法
正常的表单提交会把所有的表单数据提交上来 $data = $_POST; print_r($data);exit; 结果 Array ( [status] => 1 [comment] => ...
- 在C#中如何使用资源的方法
总结一个在C#中如何使用资源的方法:一:使用本地文件1.将本地要加入的资源文本(视频,图片,文本或其它)加入项目,比如我们现在加入一个up.bmp的图片到项目中,且放在文件夹Resources下面,2 ...
- 清空SQL Server数据库中所有表数据的方法(转)
清空SQL Server数据库中所有表数据的方法 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入 ...
- MySQL中快速复制数据表方法汇总
本文将着重介绍两个MySQL命令的组合,它将以原有数据表为基础,创建相同结构和数据的新数据表. 这可以帮助你在开发过程中快速的复制表格作为测试数据,而不必冒险直接操作正在运行 的数据表. 示例如下: ...
随机推荐
- 【BZOJ2436】【NOI2011】NOI嘉年华(动态规划)
[BZOJ2436]NOI嘉年华(动态规划) 题面 BZOJ 题解 考虑第一问如何求解 发现状态与选择了哪些活动无关,只与时间有关 设\(f[i][j]\)表示前\(i\)个单位时间(离散后),一个嘉 ...
- php安装gd库
安装gd需要以下库: gd-2.0.33.tar.gz http://www.boutell.com/gd/ jpegsrc.v6b.tar.gz http://www.ijg.org/ libpng ...
- MyBatis openSession(),close(),和commit() 底层代码剖析
一:MyBatis工具类 中openSession到底做了什么? Mybatis工具类 private static final String RESOURCE = "mybatis-con ...
- html5 video,audio控制播放多次,请求/监测全屏状态
audio 播放 Element.play(); 如果在播放中,调用play,从头播放,则需要先load,同时绑定结束方法,如 Element.addEventListener('ended',f ...
- Linux基础-shell脚本知识整理和脚本编写----------变量、运算符、流程控制、函数、计划任务(发送邮件)
I:知识整理:变量.运算符.流程控制.函数.计划任务 变量 系统变量:set:显示所有变量 env:环境变量 常用系统变量: path pwd lang home his ...
- 玲珑杯”ACM比赛 Round #19 B 维护单调栈
1149 - Buildings Time Limit:2s Memory Limit:128MByte Submissions:588Solved:151 DESCRIPTION There are ...
- Codeforces Round #340 (Div. 2) E 莫队+前缀异或和
E. XOR and Favorite Number time limit per test 4 seconds memory limit per test 256 megabytes input s ...
- spoj694 DISUBSTR - Distinct Substrings
Given a string, we need to find the total number of its distinct substrings. Input T- number of test ...
- bzoj 2277 [Poi2011]Strongbox 数论
2277: [Poi2011]Strongbox Time Limit: 60 Sec Memory Limit: 32 MBSubmit: 527 Solved: 231[Submit][Sta ...
- windows下libcurl与zlib和ssl共同编译
下载了curl 7.37,在project里有各个版本VS对应的项目文件,我们选择合适的打开即可以编译,根据不同的项目配置输出想要的库,比如可以切换多种SSL库,dll/lib,debug/relea ...