Laravel firstOrNew 与 firstOrCreate 的区别

例如:

$item = App\Deployment::firstOrNew(
    [‘name‘ => ‘问答小程序‘], [‘delayed‘ => 1]
);
  • firstOrNew 需要手动调用 save,才会保存到数据库。适合同时需要修改其他属性的场景。
  • firstOrCreate 会自动保存到数据库。适合不需要额外修改其他属性的场景。

注意:MassAssignmentException

firstOrCreate 一定要设置 model 的 fillable, 否则会报 MassAssignmentException 的错误。

参考: Laravel Model 的 fillable (白名单)与 guarded (黑名单)

即,create 受 fillable 的限制,但是 save 不受影响。

原文地址:https://www.cnblogs.com/sgm4231/p/10196438.html

时间: 2024-11-29 11:48:30

Laravel firstOrNew 与 firstOrCreate 的区别的相关文章

laravel门面与服务提供者区别

laravel门面模式与服务提供者区别 以 Laravel 自带的文件系统为例,在 config/app.php 的配置文件的 providers 数组中,注册了一个服务提供者: Illuminate\Filesystem\FilesystemServiceProvider::class,     在 alias 数组中定义了一个门面: ‘File’ => Illuminate\Support\Facades\File::class,     通过这两个步骤,我们就可以非常方便的使用 Larav

PHPer面试指南-laravel 篇

简述 Laravel 的生命周期 Laravel 采用了单一入口模式,应用的所有请求入口都是 public/index.php 文件. 注册类文件自动加载器 : Laravel通过 composer 进行依赖管理,无需开发者手动导入各种类文件,而由自动加载器自行导入. 创建服务容器:从 bootstrap/app.php 文件中取得 Laravel 应用实例 $app (服务容器) 创建 HTTP / Console 内核:传入的请求会被发送给 HTTP 内核或者 console 内核进行处理

Laravel5.1学习笔记19 EloquentORM 入门

Eloquent:入门 简介 定义模型(model) Eloquent Model Conventions Retrieving Multiple Models Retrieving Single Models / Aggregates Retrieving Aggregates Inserting & Updating Models Basic Inserts Basic Updates Mass Assignment Deleting Models Soft Deleting Queryin

laravel中firstOrCreate的使用

laravel - firstOrCreate(判断是否存在, 不存在则新增数据) 1, 判断goods_name是否存在YKQ003213_G这个参数 2, 不存在则添加数组的内容 3, 需要设置自动填充的白名单 同理的应该还有 updateOrCreate, 方法(未测试)

Laravel模板引擎Blade中section的一些标签的区别介绍

Laravel 框架中的 Blade 模板引擎,很好用,但是在官方文档中有关 Blade 的介绍并不详细,有些东西没有写出来,而有些则是没有说清楚.比如,使用中可能会遇到这样的问题: [email protected] 和 @section 都可以预定义可替代的区块,这两者有什么区别呢?[email protected] 可以用 @show, @stop, @overwrite 以及 @append 来结束,这三者又有什么区别呢? 本文试对这些问题做一个比较浅显但是直观的介绍. @yield 与

Laravel关联模型中has和with区别

本篇文章给大家带来的内容是关于Laravel关联模型中has和with区别(详细介绍),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 首先看代码: 1 2 3 4 5 6 $userCoupons = UserCoupons::with(['coupon' => function($query) use($groupId){     return $query->select('id', 'group_id', 'cover', 'group_number', 'group_

[PHP] 浅谈 Laravel auth:api 不同驱动 token 和 passport 的区别

token 驱动使用 TokenGuard 用传递的值去用户表中查询 member_token 字段的值,看是否有匹配的.服务端需要在用户表中存储 access_token. passport 驱动是 laravel/passport 组件包提供的,通过 Bearer Token Validator 对传递的值进行 JWT 验证,看是否解析出的值能匹配到数据库中的 auth_access_token_id.服务端不需要存储 access_token,相对安全. 另外,laravel/passpo

Laravel @section/endsection 与 @section/show, @yield 的区别

base layout 中需要使用 @section("section_name") 区块链是什么? @show 继承的 blade 中需要使用 @section("section_name") 区块链的定义 @endsection 其会覆盖父模板中的内容. 如果需要基于原 layout section 附加内容 @section("section_name") @parent <p>区块链是xxx</p> @endsec

laravel中delete()方法和destroy()方法的区别

delete()方法是实例方法,需要查询到相应的数据并通过模型实例调用 destroy()方法可以直接调用,通过索引删除记录 举个栗子: 1 /*delete()方法删除*/ 2 //先查找记录 3 $blog = Blog::find(1); 4 if($blog){ 5 //再删除记录 6 if($blog->delete()){ 7 echo "删除成功!"; 8 }else{ 9 echo '删除失败!'; 10 } 11 }else{ 12 echo "文章不