Skip to content

Commit a689024

Browse files
committed
Add change log and documentation
1 parent 07659b3 commit a689024

File tree

3 files changed

+19
-15
lines changed

3 files changed

+19
-15
lines changed

user_guide_src/source/changelogs/v4.3.0.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ Model
109109
- Added before and after events to ``BaseModel::insertBatch()`` and ``BaseModel::updateBatch()`` methods. See :ref:`model-events-callbacks`.
110110
- Added ``Model::allowEmptyInserts()`` method to insert empty data. See :ref:`Using CodeIgniter's Model <model-allow-empty-inserts>`
111111
- Added new :ref:`entities-property-casting` class ``IntBoolCast`` for Entity.
112+
- Improved the SQL structure for ``Builder::updateBatch()``. See :ref:`update-batch` for the details.
112113

113114
Libraries
114115
=========

user_guide_src/source/database/query_builder.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -939,6 +939,8 @@ Or as an array:
939939
You may also use the ``$builder->set()`` method described above when
940940
performing updates.
941941

942+
.. _update-batch:
943+
942944
UpdateBatch
943945
===========
944946

user_guide_src/source/database/query_builder/092.php

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,28 @@
22

33
$data = [
44
[
5-
'title' => 'My title',
6-
'name' => 'My Name 2',
7-
'date' => 'My date 2',
5+
'title' => 'Title 1',
6+
'name' => 'Name 1',
7+
'date' => 'Date 1',
88
],
99
[
10-
'title' => 'Another title',
11-
'name' => 'Another Name 2',
12-
'date' => 'Another date 2',
10+
'title' => 'Title 2',
11+
'name' => 'Name 2',
12+
'date' => 'Date 2',
1313
],
1414
];
1515

1616
$builder->updateBatch($data, 'title');
1717
/*
1818
* Produces:
19-
* UPDATE `mytable` SET `name` = CASE
20-
* WHEN `title` = 'My title' THEN 'My Name 2'
21-
* WHEN `title` = 'Another title' THEN 'Another Name 2'
22-
* ELSE `name` END,
23-
* `date` = CASE
24-
* WHEN `title` = 'My title' THEN 'My date 2'
25-
* WHEN `title` = 'Another title' THEN 'Another date 2'
26-
* ELSE `date` END
27-
* WHERE `title` IN ('My title','Another title')
19+
* UPDATE `mytable`
20+
* INNER JOIN (
21+
* SELECT 'Title 1' `title`, 'Name 1' `name`, 'Date 1' `date` UNION ALL
22+
* SELECT 'Title 2' `title`, 'Name 2' `name`, 'Date 2' `date`
23+
* ) u
24+
* ON `mytable`.`title` = u.`title`
25+
* SET
26+
* `mytable`.`title` = u.`title`,
27+
* `mytable`.`name` = u.`name`,
28+
* `mytable`.`date` = u.`date`
2829
*/

0 commit comments

Comments
 (0)