这篇文章主要介绍了Laravel框架学习笔记之批量更新数据功能,结合实例形式分析了Laravel框架批量更新数据的相关模型定义与使用操作技巧,需要的朋友可以参考下
本文实例讲述了Laravel框架批量更新数据功能。分享给大家供大家参考,具体如下:
前言
上周公司的比赛项目以泪奔结束...一台2核4G的VPS完全蹦了..集体被老大叼杠。下个月的比赛又要开始了,所以现在抓紧时间升级服务器,优化代码与SQL,刚看到排名那有1000多条更新语句,太受不了了,所以在google找了下资源,找到了批量更新数据的方法,记录一下。
代码
//from https://github.com/mavinoo/laravelBatch
static function batchUpdate($model, array $values, $index = null){
$final = [];
$ids = [];
if (!count($values)) {
return false;
}
if (!isset($index) || empty($index)) {
$index = $model->getKeyName();
}
foreach ($values as $key => $val) {
$ids[] = $val[$index];
foreach (array_keys($val) as $field) {
if ($field !== $index) {
$value = (is_null($val[$field]) ? 'NULL' : '"' . self::mysql_escape($val[$field]) . '"');
$final[$field][] = 'WHEN `' . $index . '` = "' . $val[$index] . '" THEN ' . $value . ' ';
}
}
}
$cases = '';
foreach ($final as $k => $v) {
$cases .= '`' . $k . '` = (CASE ' . implode("\n", $v) . "\n"
. 'ELSE `' . $k . '` END), ';
}
$full_table = $model->getConnection()->getTablePrefix() . $model->getTable();
$query = "UPDATE `" .$full_table . "` SET " . substr($cases, 0, -2) . " WHERE `$index` IN(" . '"' . implode('","', $ids) . '"' . ");";
\DB::update($query);
#return $this->db->connection($this->getConnectionName($table))->update($query);
}
测试代码如下
$userInstance = new User();
$value = [
[
'id' => 2,
'contest_name' => 'A1',
'project_name' => 'P1'
] ,
[
'id' => 3,
'contest_name' => 'A2',
'project_name' => 'P2'
] ,
];
$index = 'id';
Utils::batchUpdate($userInstance, $value, $index);
记录完赶紧干活去....
更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。
编程基础网
本文标题为:Laravel框架学习笔记之批量更新数据功能
基础教程推荐
猜你喜欢
- PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案 2022-11-26
- CentOS 7 编译安装PHP7 2023-09-02
- php fread函数使用方法总结 2023-01-19
- 在laravel中实现事务回滚的方法 2023-02-22
- 解析PHP中Exception异常机制 2023-06-13
- PHP如何将头像图片转换圆形图片 2023-08-30
- PHP中的输出缓冲控制详解 2023-06-03
- php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次) 2023-04-24
- PHP树形结构tree类用法示例 2022-12-15
- PHP设计模式之状态模式定义与用法详解 2022-10-12
