db()->getTable(); } /** * 批量更新字段 * [1 => ['filed1' => 'value1','filed2'=>'value2'],2=> ['filed1'=>'value1']] key为ID主键 * 获取DB 对象并赋予 模型本身的 connection 连接 * @return mixed */ public static function updateWhenCase(array $dataMap) { if(is_array($dataMap) && count($dataMap) > 0 ) { // 构建 SQL 语句 $sql = "UPDATE " . self::getDb() . " SET "; $uniqueFieldValues = []; foreach ($dataMap as $id => $data) { foreach ($data as $field => $value) { if (!isset($uniqueFieldValues[$field])) { $uniqueFieldValues[$field] = []; } $uniqueFieldValues[$field][] = ['id' => $id, 'value' => $value]; } } $placeholders = []; foreach ($uniqueFieldValues as $field => $data) { $str = " `$field` = CASE id "; foreach ($data as $value) { $str .= " WHEN {$value['id']} THEN " . self::stringFilter($value['value']); } $str .= " ELSE " . $field . " END"; $placeholders[] = $str; } $sql .= implode(', ', $placeholders); $sql .= " where id in (" . implode(",", array_keys($dataMap)) . ")"; // 执行 SQL 语句 Db::execute($sql); } } public static function stringFilter($string) { if(is_null($string)) { return 'null'; } return "'" . str_replace("'","\'",$string) . "'"; } }