Skip to content

Commit 6bb2e5b

Browse files
committed
docs: add about RawSql
1 parent 084a442 commit 6bb2e5b

5 files changed

Lines changed: 57 additions & 2 deletions

File tree

user_guide_src/source/changelogs/v4.2.0.rst

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@ Others
6464
- Added 4th parameter ``$includeDir`` to ``get_filenames()``. See :php:func:`get_filenames`.
6565
- HTML helper ``script_tag()`` now uses ``null`` values to write boolean attributes in minimized form: ``<script src="..." defer />``. See the sample code for :php:func:`script_tag`.
6666
- RouteCollection::addRedirect() can now use placeholders.
67-
67+
- QueryBuilder raw SQL string support
68+
- Added the class ``CodeIgniter\Database\RawSql`` which expresses raw SQL strings.
69+
- :ref:`select() <query-builder-select-rawsql>`, :ref:`where() <query-builder-where-rawsql>`, :ref:`like() <query-builder-like-rawsql>` accept the ``CodeIgniter\Database\RawSql`` instance.
6870

6971
Changes
7072
*******

user_guide_src/source/database/query_builder.rst

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,17 @@ escaping of fields may break them.
117117

118118
.. literalinclude:: query_builder/009.php
119119

120+
.. _query-builder-select-rawsql:
121+
122+
RawSql
123+
^^^^^^
124+
125+
Since v4.2.0, ``$builder->select()`` accepts a ``CodeIgniter\Database\RawSql`` instance, which expresses raw SQL strings.
126+
127+
.. literalinclude:: query_builder/099.php
128+
129+
.. warning:: When you use ``RawSql``, you MUST escape the data manually. Failure to do so could result in SQL injections.
130+
120131
$builder->selectMax()
121132
---------------------
122133

@@ -283,9 +294,20 @@ methods:
283294

284295
.. literalinclude:: query_builder/027.php
285296

297+
.. _query-builder-where-rawsql:
298+
299+
5. RawSql
300+
^^^^^^^^^
301+
302+
Since v4.2.0, ``$builder->where()`` accepts a ``CodeIgniter\Database\RawSql`` instance, which expresses raw SQL strings.
303+
304+
.. literalinclude:: query_builder/100.php
305+
306+
.. warning:: When you use ``RawSql``, you MUST escape the data manually. Failure to do so could result in SQL injections.
307+
286308
.. _query-builder-where-subquery:
287309

288-
5. Subqueries
310+
6. Subqueries
289311
^^^^^^^^^^^^^
290312

291313
.. literalinclude:: query_builder/028.php
@@ -387,6 +409,17 @@ searches.
387409

388410
.. literalinclude:: query_builder/041.php
389411

412+
.. _query-builder-like-rawsql:
413+
414+
3. RawSql
415+
^^^^^^^^^
416+
417+
Since v4.2.0, ``$builder->like()`` accepts a ``CodeIgniter\Database\RawSql`` instance, which expresses raw SQL strings.
418+
419+
.. literalinclude:: query_builder/101.php
420+
421+
.. warning:: When you use ``RawSql``, you MUST escape the data manually. Failure to do so could result in SQL injections.
422+
390423
$builder->orLike()
391424
------------------
392425

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
use CodeIgniter\Database\RawSql;
4+
5+
$sql = 'REGEXP_SUBSTR(ral_anno,"[0-9]{1,2}([,.][0-9]{1,3})([,.][0-9]{1,3})") AS ral';
6+
$builder->select(new RawSql($sql));
7+
$query = $builder->get();
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?php
2+
3+
use CodeIgniter\Database\RawSql;
4+
5+
$sql = "id > 2 AND name != 'Accountant'";
6+
$builder->where(new RawSql($sql));
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
use CodeIgniter\Database\RawSql;
4+
5+
$sql = "CONCAT(users.name, ' ', IF(users.surname IS NULL OR users.surname = '', '', users.surname))";
6+
$rawSql = new RawSql($sql);
7+
$builder->like($rawSql, 'value', 'both');

0 commit comments

Comments
 (0)