广告位 |
thinkphp模型数据的新增
2021年9月25日 11:02编程 > 2489人已围观
简介 模型数据的新增和数据库的新增数据有所区别,数据库的新增只是单纯的写入给定的数据,而模型的数据写入会包含修改器、自动完成以及模型事件等环节,数据库的数据写入参考数据库章节。...
模型数据的新增和数据库的新增数据有所区别,数据库的新增只是单纯的写入给定的数据,而模型的数据写入会包含修改器、自动完成以及模型事件等环节,数据库的数据写入参考数据库章节。
添加一条数据
第一种是实例化模型对象后赋值并保存:
$user = new User;$user->name = 'thinkphp';$user->email = 'thinkphp@qq.com';$user->save();
save
方法成功会返回true
,并且只有当before_insert
事件返回false
的时候返回false
,一旦有错误就会抛出异常。所以无需判断返回类型。
也可以直接传入数据到save
方法批量赋值:
$user = new User;$user->save([ 'name' => 'thinkphp', 'email' => 'thinkphp@qq.com']);
默认只会写入数据表已有的字段,如果你通过外部提交赋值给模型,并且希望指定某些字段写入,可以使用:
$user = new User;// post数组中只有name和email字段会写入$user->allowField(['name','email'])->save($_POST);
最佳的建议是模型数据赋值之前就进行数据过滤,例如:
$user = new User;// 过滤post数组中的非数据表字段数据$data = Request::only(['name','email']);$user->save($data);
save
方法新增数据返回的是写入的记录数(通常是1
),而不是自增主键值。
Replace
写入
save
方法可以支持replace
写入。
$user = new User;$user->name = 'thinkphp';$user->email = 'thinkphp@qq.com';$user->replace()->save();
获取自增ID
如果要获取新增数据的自增ID,可以使用下面的方式:
$user = new User;$user->name = 'thinkphp';$user->email = 'thinkphp@qq.com';$user->save();// 获取自增IDecho $user->id;
这里其实是获取模型的主键,如果你的主键不是id
,而是user_id
的话,其实获取自增ID就变成这样:
$user = new User;$user->name = 'thinkphp';$user->email = 'thinkphp@qq.com';$user->save();// 获取自增IDecho $user->user_id;
不要在同一个实例里面多次新增数据,如果确实需要多次新增,可以使用后面的静态方法处理。
批量增加数据
支持批量新增,可以使用:
$user = new User;$list = [ ['name'=>'thinkphp','email'=>'thinkphp@qq.com'], ['name'=>'onethink','email'=>'onethink@qq.com']];$user->saveAll($list);
saveAll方法新增数据返回的是包含新增模型(带自增ID)的数据集对象。
saveAll
方法新增数据默认会自动识别数据是需要新增还是更新操作,当数据中存在主键的时候会认为是更新操作。
静态方法
还可以直接静态调用create
方法创建并写入:
$user = User::create([ 'name' => 'thinkphp', 'email' => 'thinkphp@qq.com']);echo $user->name;echo $user->email;echo $user->id; // 获取自增ID
和
save
方法不同的是,create
方法返回的是当前模型的对象实例。
create
方法默认会过滤不是数据表的字段信息,可以在第二个参数可以传入允许写入的字段列表,例如:
// 只允许写入name和email字段的数据$user = User::create([ 'name' => 'thinkphp', 'email' => 'thinkphp@qq.com'], ['name', 'email']);echo $user->name;echo $user->email;echo $user->id; // 获取自增ID
支持replace
操作,使用下面的方法:
$user = User::create([ 'name' => 'thinkphp', 'email' => 'thinkphp@qq.com'], ['name','email'], true);
上一篇: thinkphp定义模型
下一篇: thinkphp 数据库模型查询
广告位 |
相关文章
随机图文
-
雷军怎样在小米诞生前夜决定拯救金山
据雷军回忆,“2011年我们小米已经创办了一年多时间,那个时候我们正在紧锣密鼓地开发小米手机第一代,非常非常忙。金山的两位老板张旋龙、求伯君来找我,当时金山遭遇了巨大的危机,他们希望我重回金山。... -
联商首页资讯动态新零售正文 抖音“防沉迷”,能有多大用?
一提到抖音,江海就忍不住叹气。 他家孩子7岁,刚上一年级就迷上了抖音。让他放下手机来吃饭,得到的回复总是,“等一下,马上就来”,接着就一直磨蹭,遇到好笑的,就“咯咯咯”傻笑。放学回家刷,晚上睡前刷,吃饭的时候也刷,“如果刷牙有这么自觉就好了”,他说。... -
苹果iPhone 13系列等新品正式迎来发售
苹果iPhone 13系列、新款iPad和iPad mini等新品正式迎来发售。由于时差原因,全球部分地区用户已“提前”拿到iPhone 13系列新品。 目前,部分iPhone 13 预购用户已可在 Apple Store 应用看到订单状态更改为“准备取货”。天猫、京东等电商平台购买的手机已经陆续发货,预计在明后两天就能收到。... -
画册封面设计的六种常用表现形式
画册设计是平面设计师会经常遇到的工作,而画册的封面又是画册最为重要的部分,它起着概括画册内容、奠定画册调性、彰显画册品质,以及吸引读者的作用,而且画册设计对设计师的排版能力、构图能力、色彩搭配能力、审美、材质和工艺的运用都有不小的要求,值得深入学习和研究,所以葱爷决定专门写一篇文章,概括封面设计最常用的几种形式。...