diff options
author | nisheeth-barthwal <nisheeth.barthwal@nbaztec.co.in> | 2013-03-21 09:59:46 +0100 |
---|---|---|
committer | nisheeth-barthwal <nisheeth.barthwal@nbaztec.co.in> | 2013-03-21 09:59:46 +0100 |
commit | 76f42d9dcd42bf90c407f151d04ef207c8deebdf (patch) | |
tree | c98568cd18540f2df23881ceed82cf9f1616d4c4 /system/database/DB_query_builder.php | |
parent | 7d10006a0001ff0e7d82ec994b1e9cbb63683ffc (diff) | |
parent | 13f6eabafa655828a8c09b4ae0a58a2e3776c269 (diff) |
Merge branch 'develop' of git://github.com/EllisLab/CodeIgniter into develop
Diffstat (limited to 'system/database/DB_query_builder.php')
-rw-r--r-- | system/database/DB_query_builder.php | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/system/database/DB_query_builder.php b/system/database/DB_query_builder.php index 85a233b50..292621b66 100644 --- a/system/database/DB_query_builder.php +++ b/system/database/DB_query_builder.php @@ -1855,6 +1855,47 @@ abstract class CI_DB_query_builder extends CI_DB_driver { // -------------------------------------------------------------------- /** + * Update_Batch statement + * + * Generates a platform-specific batch update string from the supplied data + * + * @param string $table Table name + * @param array $values Update data + * @param string $index WHERE key + * @return string + */ + protected function _update_batch($table, $values, $index) + { + $ids = array(); + foreach ($values as $key => $val) + { + $ids[] = $val[$index]; + + foreach (array_keys($val) as $field) + { + if ($field !== $index) + { + $final[$field][] = 'WHEN '.$index.' = '.$val[$index].' THEN '.$val[$field]; + } + } + } + + $cases = ''; + foreach ($final as $k => $v) + { + $cases .= $k." = CASE \n" + .implode("\n", $v)."\n" + .'ELSE '.$k.' END, '; + } + + $this->where($index.' IN('.implode(',', $ids).')', NULL, FALSE); + + return 'UPDATE '.$table.' SET '.substr($cases, 0, -2).$this->_compile_wh('qb_where'); + } + + // -------------------------------------------------------------------- + + /** * The "set_update_batch" function. Allows key/value pairs to be set for batch updating * * @param array |