ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
快速处理函数以 quick 开头,为实现快速执行,未预编译SQL。 > 如果您需要快速处理海量数据,一定需要使用 quick + 批量函数,项目实践中,quick 类函数一般每分钟能处理 100 万条以上的数据。 快速处理函数与常规函数调用方式完全一致,对应关系如下: | 快速处理函数| 对应常规函数| |-|-| |快速插入(quickInsert)| 插入(insert)| |快速更新(quckUpdate)| 更新(update)| |快速替换(quickReplace)| 替换(replace)| |快速批量更新(quckUpdateMany)| 批量更新(updateMany)| |快速批量插入(quickInsertMany)| 批量插入(insertMany)| |快速批量替换(quickReplaceMany)| 批量替换(replaceMany)| MYSQL原生不支持快速批量更新,底层使用 case when 实现。 ### 示例 ~~~ $objs = []; $obj1 = new stdClass(); $obj1->id = 1; $obj1->name = '马云'; $obj1->age = '60'; $objs[] = $obj1; $obj2 = new stdClass(); $obj1->id = 2; $obj2->name = '刘强东'; $obj1->age = '50'; $objs[] = $obj2; Be::getDb()->quickUpdateMany('user', $objs); ~~~ ### 二维数组方式 ~~~ $arrs = [ [ 'id' => 1, 'name' => '马云', 'age' => '60', ], [ 'id' => 1, 'name' => '刘强东', 'age' => '50', ] ]; Be::getDb()->quickUpdateMany('user', $arrs); ~~~ 上面的例子最终生成的 SQL 如下: ``` UPDATE `user` SET `name` = CASE `id` WHEN '1' THEN '马云' WHEN '2' THEN '刘强东' END, `age` = CASE `id` WHEN '1' THEN '60' WHEN '2' THEN '50' END WHERE `id` IN('1', '2') ```