批量更新多个数据的示例
序
最近在写任务的时候遇到了一个问题,需要批量更新多条数据。但是Laravel并没有提供这样的方法,Google引入了一些方法,只是用任务来说明。
任务要求
该任务是一个用于清除未读通知的简单API,即将通知表中符合用户id的行中的is_read更改为read=0到1(0表示未读,1表示已读)。
方法1
首先想到的是使用where()方法找出用户id和被读取的合格通知,然后使用foreach循环和save()更新数据表。
$ notices=notice : where(' user _ id ',$userId) -where('is_read ',0)-get();//获取通知foreach($ notices as $ notice){ $ notice-is _ read=1;$ notice-save();}//这种更新数据表的方法是可行的,但是每次遍历都会与数据库进行通信。当数据量较大时,响应速度会很慢,资源会被浪费。
方法2
去谷歌的时候,一篇博文启发了我:Laravel一次更新多条记录,还有批量更新的方法
事实上,这个问题可以通过使用数据库的SQL语句来解决
更新通知设置为is _ read=1,其中user _ id=1,is _ read=0一旦数据通信加快了响应速度并减少了资源浪费,那么我可以这样写
复制代码如下: $ notices=db :3360 update(db :3360 raw(' update notices set is _ read=1,其中user _ id=1,is _ read=0 ');
$ notifications的返回值是已更改的数据行数
在我们未来的应用中会有很多类似的任务,比如忽略一些通知,阅读一些消息等。为了代码重用,我们可以编写一个方法来传入要修改的表名、user_id和字段名
publish函数update_batch_one($table,$user_id,$column) { $q='UPDATE '。$table.SET.$column。=1WHEREuser_id='。$user_id。“与”。$列。'=0';返回db:更新(db:3360 raw ($ q))摘要
这两种方法只能解决一些具体问题,但它们提供了一种思维方式。有时,使用SQL语句可以轻松简单地操作数据表。如果需要根据不同的条件批量确认多条数据的多条信息,那么就需要使用SQL的WHEN THEN方法。具体的思路在我上面贴的地址。
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。
版权声明:批量更新多个数据的示例是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。