CodeIgniter4/database/query_builder.html
2022-12-07 04:47:09 +00:00

3424 lines
299 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Query Builder Class &mdash; CodeIgniter 4.2.10 documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/citheme.css" type="text/css" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/js/citheme.js"></script>
<script src="../_static/js/carbon.js"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Transactions" href="transactions.html" />
<link rel="prev" title="Query Helper Methods" href="helpers.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #DD4814" >
<a href="../index.html">
<img src="../_static/ci-logo-text.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../intro/index.html">Welcome to CodeIgniter4</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../intro/index.html">Welcome to CodeIgniter4</a></li>
<li class="toctree-l2"><a class="reference internal" href="../intro/requirements.html">Server Requirements</a></li>
<li class="toctree-l2"><a class="reference internal" href="../intro/credits.html">Credits</a></li>
<li class="toctree-l2"><a class="reference internal" href="../intro/psr.html">PSR Compliance</a></li>
<li class="toctree-l2"><a class="reference internal" href="../license.html">License Agreement</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../installation/installing_composer.html">Composer Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../installation/installing_manual.html">Manual Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../installation/running.html">Running Your App</a></li>
<li class="toctree-l2"><a class="reference internal" href="../installation/troubleshooting.html">Troubleshooting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../changelogs/index.html">Change Logs</a></li>
<li class="toctree-l2"><a class="reference internal" href="../installation/upgrading.html">Upgrading From a Previous Version</a></li>
<li class="toctree-l2"><a class="reference internal" href="../installation/repositories.html">CodeIgniter Repositories</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../tutorial/index.html">Build Your First Application</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../tutorial/static_pages.html">Static Pages</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tutorial/news_section.html">News Section</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tutorial/create_news_items.html">Create News Items</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tutorial/conclusion.html">Conclusion</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../concepts/index.html">CodeIgniter4 Overview</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../concepts/structure.html">Application Structure</a></li>
<li class="toctree-l2"><a class="reference internal" href="../concepts/mvc.html">Models, Views, and Controllers</a></li>
<li class="toctree-l2"><a class="reference internal" href="../concepts/autoloader.html">Autoloading Files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../concepts/services.html">Services</a></li>
<li class="toctree-l2"><a class="reference internal" href="../concepts/factories.html">Factories</a></li>
<li class="toctree-l2"><a class="reference internal" href="../concepts/http.html">Working With HTTP Requests</a></li>
<li class="toctree-l2"><a class="reference internal" href="../concepts/security.html">Security Guidelines</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../general/index.html">General Topics</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../general/configuration.html">Configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../general/urls.html">CodeIgniter URLs</a></li>
<li class="toctree-l2"><a class="reference internal" href="../general/helpers.html">Helper Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../general/common_functions.html">Global Functions and Constants</a></li>
<li class="toctree-l2"><a class="reference internal" href="../general/logging.html">Logging Information</a></li>
<li class="toctree-l2"><a class="reference internal" href="../general/errors.html">Error Handling</a></li>
<li class="toctree-l2"><a class="reference internal" href="../general/caching.html">Web Page Caching</a></li>
<li class="toctree-l2"><a class="reference internal" href="../general/ajax.html">AJAX Requests</a></li>
<li class="toctree-l2"><a class="reference internal" href="../general/modules.html">Code Modules</a></li>
<li class="toctree-l2"><a class="reference internal" href="../general/managing_apps.html">Managing your Applications</a></li>
<li class="toctree-l2"><a class="reference internal" href="../general/environments.html">Handling Multiple Environments</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../incoming/index.html">Controllers and Routing</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../incoming/routing.html">URI Routing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../incoming/controllers.html">Controllers</a></li>
<li class="toctree-l2"><a class="reference internal" href="../incoming/filters.html">Controller Filters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../incoming/message.html">HTTP Messages</a></li>
<li class="toctree-l2"><a class="reference internal" href="../incoming/request.html">Request Class</a></li>
<li class="toctree-l2"><a class="reference internal" href="../incoming/incomingrequest.html">IncomingRequest Class</a></li>
<li class="toctree-l2"><a class="reference internal" href="../incoming/content_negotiation.html">Content Negotiation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../incoming/methodspoofing.html">HTTP Method Spoofing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../incoming/restful.html">RESTful Resource Handling</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../outgoing/index.html">Building Responses</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/views.html">Views</a></li>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/view_cells.html">View Cells</a></li>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/view_renderer.html">View Renderer</a></li>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/view_layouts.html">View Layouts</a></li>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/view_parser.html">View Parser</a></li>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/view_decorators.html">View Decorators</a></li>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/table.html">HTML Table Class</a></li>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/response.html">HTTP Responses</a></li>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/api_responses.html">API Response Trait</a></li>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/localization.html">Localization</a></li>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/alternative_php.html">Alternate PHP Syntax for View Files</a></li>
</ul>
</li>
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Working With Databases</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="examples.html">Quick Start: Usage Examples</a></li>
<li class="toctree-l2"><a class="reference internal" href="configuration.html">Database Configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="connecting.html">Connecting to a Database</a></li>
<li class="toctree-l2"><a class="reference internal" href="queries.html">Running Queries</a></li>
<li class="toctree-l2"><a class="reference internal" href="results.html">Generating Query Results</a></li>
<li class="toctree-l2"><a class="reference internal" href="helpers.html">Query Helper Functions</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Query Builder Class</a></li>
<li class="toctree-l2"><a class="reference internal" href="transactions.html">Transactions</a></li>
<li class="toctree-l2"><a class="reference internal" href="metadata.html">Getting MetaData</a></li>
<li class="toctree-l2"><a class="reference internal" href="call_function.html">Custom Function Calls</a></li>
<li class="toctree-l2"><a class="reference internal" href="events.html">Database Events</a></li>
<li class="toctree-l2"><a class="reference internal" href="utilities.html">Database Utilities</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../models/index.html">Modeling Data</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../models/model.html">Using CodeIgniter's Model</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/entities.html">Using Entity Classes</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../dbmgmt/index.html">Managing Databases</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../dbmgmt/forge.html">Database Manipulation with Database Forge</a></li>
<li class="toctree-l2"><a class="reference internal" href="../dbmgmt/migration.html">Database Migrations</a></li>
<li class="toctree-l2"><a class="reference internal" href="../dbmgmt/seeds.html">Database Seeding</a></li>
<li class="toctree-l2"><a class="reference internal" href="../dbmgmt/db_commands.html">Database Commands</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../libraries/index.html">Library Reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../libraries/caching.html">Caching Driver</a></li>
<li class="toctree-l2"><a class="reference internal" href="../libraries/cookies.html">Cookies</a></li>
<li class="toctree-l2"><a class="reference internal" href="../libraries/curlrequest.html">CURLRequest Class</a></li>
<li class="toctree-l2"><a class="reference internal" href="../libraries/email.html">Email Class</a></li>
<li class="toctree-l2"><a class="reference internal" href="../libraries/encryption.html">Encryption Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="../libraries/files.html">Working with Files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../libraries/files.html#file-collections">File Collections</a></li>
<li class="toctree-l2"><a class="reference internal" href="../libraries/honeypot.html">Honeypot Class</a></li>
<li class="toctree-l2"><a class="reference internal" href="../libraries/images.html">Image Manipulation Class</a></li>
<li class="toctree-l2"><a class="reference internal" href="../libraries/pagination.html">Pagination</a></li>
<li class="toctree-l2"><a class="reference internal" href="../libraries/publisher.html">Publisher</a></li>
<li class="toctree-l2"><a class="reference internal" href="../libraries/security.html">Security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../libraries/sessions.html">Session Library</a></li>
<li class="toctree-l2"><a class="reference internal" href="../libraries/throttler.html">Throttler</a></li>
<li class="toctree-l2"><a class="reference internal" href="../libraries/time.html">Times and Dates</a></li>
<li class="toctree-l2"><a class="reference internal" href="../libraries/typography.html">Typography</a></li>
<li class="toctree-l2"><a class="reference internal" href="../libraries/uploaded_files.html">Working with Uploaded Files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../libraries/uri.html">Working with URIs</a></li>
<li class="toctree-l2"><a class="reference internal" href="../libraries/user_agent.html">User Agent Class</a></li>
<li class="toctree-l2"><a class="reference internal" href="../libraries/validation.html">Validation</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../helpers/index.html">Helpers</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../helpers/array_helper.html">Array Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/cookie_helper.html">Cookie Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/date_helper.html">Date Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/filesystem_helper.html">Filesystem Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/form_helper.html">Form Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/html_helper.html">HTML Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/inflector_helper.html">Inflector Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/number_helper.html">Number Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/security_helper.html">Security Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/test_helper.html">Test Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/text_helper.html">Text Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/url_helper.html">URL Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/xml_helper.html">XML Helper</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../testing/index.html">Testing</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../testing/overview.html">Getting Started</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testing/database.html">Database</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testing/fabricator.html">Generating Data</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testing/controllers.html">Controller Testing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testing/feature.html">HTTP Testing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testing/response.html">Testing Responses</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testing/benchmark.html">Benchmarking</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testing/debugging.html">Debugging Your Application</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testing/mocking.html">Mocking</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../cli/index.html">Command Line Usage</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../cli/cli_overview.html">CLI Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cli/cli_controllers.html">Running Controllers via CLI</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cli/spark_commands.html">Spark Commands</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cli/cli_commands.html">Creating Spark Commands</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cli/cli_generators.html">CLI Generators</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cli/cli_library.html">CLI Library</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cli/cli_request.html">CLIRequest Class</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../extending/index.html">Extending CodeIgniter</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../extending/core_classes.html">Creating Core System Classes</a></li>
<li class="toctree-l2"><a class="reference internal" href="../extending/common.html">Replacing Common Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../extending/events.html">Events</a></li>
<li class="toctree-l2"><a class="reference internal" href="../extending/basecontroller.html">Extending the Controller</a></li>
<li class="toctree-l2"><a class="reference internal" href="../extending/authentication.html">Authentication</a></li>
<li class="toctree-l2"><a class="reference internal" href="../extending/contributing.html">Contributing to CodeIgniter</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../libraries/official_packages.html">Official Packages</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #DD4814" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">CodeIgniter</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<a class="btn btn-neutral float-right" href="https://github.com/codeigniter4/CodeIgniter4/edit/develop/user_guide_src/source/database/query_builder.rst">Edit this page</a>
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a></li>
<li class="breadcrumb-item"><a href="index.html">Working With Databases</a></li>
<li class="breadcrumb-item active">Query Builder Class</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="query-builder-class">
<h1>Query Builder Class<a class="headerlink" href="#query-builder-class" title="Permalink to this headline"></a></h1>
<p>CodeIgniter gives you access to a Query Builder class. This pattern
allows information to be retrieved, inserted, and updated in your
database with minimal scripting. In some cases, only one or two lines
of code are necessary to perform a database action.
CodeIgniter does not require that each database table be its own class
file. It instead provides a more simplified interface.</p>
<p>Beyond simplicity, a major benefit to using the Query Builder features
is that it allows you to create database independent applications, since
the query syntax is generated by each database adapter. It also allows
for safer queries, since the values are escaped automatically by the
system.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>CodeIgniter doesnt support dots (<code class="docutils literal notranslate"><span class="pre">.</span></code>) in the database, table, and column names.</p>
</div>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><p><a class="reference internal" href="#sql-injection-protection" id="id9">SQL Injection Protection</a></p></li>
<li><p><a class="reference internal" href="#loading-the-query-builder" id="id10">Loading the Query Builder</a></p></li>
<li><p><a class="reference internal" href="#selecting-data" id="id11">Selecting Data</a></p>
<ul>
<li><p><a class="reference internal" href="#get" id="id12">Get</a></p></li>
<li><p><a class="reference internal" href="#select" id="id13">Select</a></p></li>
<li><p><a class="reference internal" href="#from" id="id14">From</a></p></li>
<li><p><a class="reference internal" href="#subqueries" id="id15">Subqueries</a></p></li>
<li><p><a class="reference internal" href="#join" id="id16">Join</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#looking-for-specific-data" id="id17">Looking for Specific Data</a></p>
<ul>
<li><p><a class="reference internal" href="#where" id="id18">Where</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#looking-for-similar-data" id="id19">Looking for Similar Data</a></p>
<ul>
<li><p><a class="reference internal" href="#like" id="id20">Like</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#ordering-results" id="id21">Ordering Results</a></p>
<ul>
<li><p><a class="reference internal" href="#orderby" id="id22">OrderBy</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#limiting-or-counting-results" id="id23">Limiting or Counting Results</a></p>
<ul>
<li><p><a class="reference internal" href="#limit" id="id24">Limit</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#union-queries" id="id25">Union queries</a></p>
<ul>
<li><p><a class="reference internal" href="#union" id="id26">Union</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#query-grouping" id="id27">Query grouping</a></p>
<ul>
<li><p><a class="reference internal" href="#group" id="id28">Group</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#inserting-data" id="id29">Inserting Data</a></p>
<ul>
<li><p><a class="reference internal" href="#insert" id="id30">Insert</a></p></li>
<li><p><a class="reference internal" href="#insertbatch" id="id31">insertBatch</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#updating-data" id="id32">Updating Data</a></p>
<ul>
<li><p><a class="reference internal" href="#update" id="id33">Update</a></p></li>
<li><p><a class="reference internal" href="#updatebatch" id="id34">UpdateBatch</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#deleting-data" id="id35">Deleting Data</a></p>
<ul>
<li><p><a class="reference internal" href="#delete" id="id36">Delete</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#method-chaining" id="id37">Method Chaining</a></p></li>
<li><p><a class="reference internal" href="#resetting-query-builder" id="id38">Resetting Query Builder</a></p>
<ul>
<li><p><a class="reference internal" href="#resetquery" id="id39">ResetQuery</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#namespace-CodeIgniter\Database" id="id40">Class Reference</a></p></li>
</ul>
</div>
<section id="sql-injection-protection">
<h2><a class="toc-backref" href="#id9">SQL Injection Protection</a><a class="headerlink" href="#sql-injection-protection" title="Permalink to this headline"></a></h2>
<p>You can generate SQL statements quite safely with the Query Builder. However,
it is not designed to prevent SQL injection no matter what data you pass.</p>
<dl class="simple">
<dt>Arguments passed to the Query Builder can be:</dt><dd><ol class="arabic simple">
<li><p><strong>identifiers</strong> such as field (or table) names</p></li>
<li><p>their <strong>values</strong></p></li>
<li><p>a part of <strong>SQL strings</strong></p></li>
</ol>
</dd>
</dl>
<p>The Query Builder will escape all <strong>values</strong> by default.</p>
<p>It will also try to properly protect <strong>identifiers</strong> and identifiers in
<strong>SQL strings</strong> by default.
However, it is implemented to work well in many use cases and
is not designed to prevent all attacks.
Therefore, you should never feed in user input to them without proper validation.</p>
<p>Also, many methods have the <code class="docutils literal notranslate"><span class="pre">$escape</span></code> parameter that can be set to disable escaping.
If <code class="docutils literal notranslate"><span class="pre">$escape</span></code> is set to false, no protection is provided by the Query Builder,
so you must ensure by yourself that
they are properly escaped or protected before passing it to the Query Builder.
The same is true when using <code class="docutils literal notranslate"><span class="pre">RawSql</span></code>, which specifies a raw SQL statement.</p>
</section>
<section id="loading-the-query-builder">
<h2><a class="toc-backref" href="#id10">Loading the Query Builder</a><a class="headerlink" href="#loading-the-query-builder" title="Permalink to this headline"></a></h2>
<p>The Query Builder is loaded through the <code class="docutils literal notranslate"><span class="pre">table()</span></code> method on the
database connection. This sets the <strong>FROM</strong> portion of the query for you
and returns a new instance of the Query Builder class:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$db</span> <span class="o">=</span> <span class="nx">\Config\Database</span><span class="o">::</span><span class="na">connect</span><span class="p">();</span>
<span class="nv">$builder</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">table</span><span class="p">(</span><span class="s1">&#39;users&#39;</span><span class="p">);</span>
</pre></div>
</div>
<p>The Query Builder is only loaded into memory when you specifically request
the class, so no resources are used by default.</p>
</section>
<section id="selecting-data">
<h2><a class="toc-backref" href="#id11">Selecting Data</a><a class="headerlink" href="#selecting-data" title="Permalink to this headline"></a></h2>
<p>The following methods allow you to build SQL <strong>SELECT</strong> statements.</p>
<section id="get">
<h3><a class="toc-backref" href="#id12">Get</a><a class="headerlink" href="#get" title="Permalink to this headline"></a></h3>
<section id="builder-get">
<h4>$builder-&gt;get()<a class="headerlink" href="#builder-get" title="Permalink to this headline"></a></h4>
<p>Runs the selection query and returns the result. Can be used by itself
to retrieve all records from a table:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">table</span><span class="p">(</span><span class="s1">&#39;mytable&#39;</span><span class="p">);</span>
<span class="nv">$query</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span> <span class="c1">// Produces: SELECT * FROM mytable</span>
</pre></div>
</div>
<p>The first and second parameters enable you to set a limit and offset
clause:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$query</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">20</span><span class="p">);</span>
<span class="cm">/*</span>
<span class="cm"> * Executes: SELECT * FROM mytable LIMIT 20, 10</span>
<span class="cm"> * (in MySQL. Other databases have slightly different syntax)</span>
<span class="cm"> */</span>
</pre></div>
</div>
<p>Youll notice that the above method is assigned to a variable named
$query, which can be used to show the results:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$query</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span>
<span class="k">foreach</span> <span class="p">(</span><span class="nv">$query</span><span class="o">-&gt;</span><span class="na">getResult</span><span class="p">()</span> <span class="k">as</span> <span class="nv">$row</span><span class="p">)</span> <span class="p">{</span>
<span class="k">echo</span> <span class="nv">$row</span><span class="o">-&gt;</span><span class="na">title</span><span class="p">;</span>
<span class="p">}</span>
</pre></div>
</div>
<p>Please visit the <a class="reference internal" href="results.html"><span class="doc">getResult*() method</span></a> page for a full
discussion regarding result generation.</p>
</section>
<section id="builder-getcompiledselect">
<h4>$builder-&gt;getCompiledSelect()<a class="headerlink" href="#builder-getcompiledselect" title="Permalink to this headline"></a></h4>
<p>Compiles the selection query just like <code class="docutils literal notranslate"><span class="pre">$builder-&gt;get()</span></code> but does not <em>run</em>
the query. This method simply returns the SQL query as a string.</p>
<p>Example:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$sql</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">getCompiledSelect</span><span class="p">();</span>
<span class="k">echo</span> <span class="nv">$sql</span><span class="p">;</span>
<span class="c1">// Prints string: SELECT * FROM mytable</span>
</pre></div>
</div>
<p>The first parameter enables you to set whether or not the query builder query
will be reset (by default it will be reset, just like when using <code class="docutils literal notranslate"><span class="pre">$builder-&gt;get()</span></code>):</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">echo</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">limit</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">20</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">getCompiledSelect</span><span class="p">(</span><span class="k">false</span><span class="p">);</span>
<span class="cm">/*</span>
<span class="cm"> * Prints string: SELECT * FROM mytable LIMIT 20, 10</span>
<span class="cm"> * (in MySQL. Other databases have slightly different syntax)</span>
<span class="cm"> */</span>
<span class="k">echo</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;title, content, date&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">getCompiledSelect</span><span class="p">();</span>
<span class="c1">// Prints string: SELECT title, content, date FROM mytable LIMIT 20, 10</span>
</pre></div>
</div>
<p>The key thing to notice in the above example is that the second query did not
utilize <code class="docutils literal notranslate"><span class="pre">limit(10,</span> <span class="pre">20)</span></code> but the generated SQL query has <code class="docutils literal notranslate"><span class="pre">LIMIT</span> <span class="pre">20,</span> <span class="pre">10</span></code>.
The reason for this outcome is because the first parameter is set to <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
</section>
<section id="builder-getwhere">
<h4>$builder-&gt;getWhere()<a class="headerlink" href="#builder-getwhere" title="Permalink to this headline"></a></h4>
<p>Identical to the <code class="docutils literal notranslate"><span class="pre">get()</span></code> method except that it permits you to add a
“where” clause in the first parameter, instead of using the <code class="docutils literal notranslate"><span class="pre">$builder-&gt;where()</span></code>
method:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$query</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">getWhere</span><span class="p">([</span><span class="s1">&#39;id&#39;</span> <span class="o">=&gt;</span> <span class="nv">$id</span><span class="p">],</span> <span class="nv">$limit</span><span class="p">,</span> <span class="nv">$offset</span><span class="p">);</span>
</pre></div>
</div>
<p>Please read about the <code class="docutils literal notranslate"><span class="pre">where()</span></code> method below for more information.</p>
</section>
</section>
<section id="select">
<span id="query-builder-select"></span><h3><a class="toc-backref" href="#id13">Select</a><a class="headerlink" href="#select" title="Permalink to this headline"></a></h3>
<section id="builder-select">
<h4>$builder-&gt;select()<a class="headerlink" href="#builder-select" title="Permalink to this headline"></a></h4>
<p>Permits you to write the <strong>SELECT</strong> portion of your query:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;title, content, date&#39;</span><span class="p">);</span>
<span class="nv">$query</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span>
<span class="c1">// Executes: SELECT title, content, date FROM mytable</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>If you are selecting all (<code class="docutils literal notranslate"><span class="pre">*</span></code>) from a table you do not need to
use this method. When omitted, CodeIgniter assumes that you wish
to select all fields and automatically adds <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">*</span></code>.</p>
</div>
<p><code class="docutils literal notranslate"><span class="pre">$builder-&gt;select()</span></code> accepts an optional second parameter. If you set it
to <code class="docutils literal notranslate"><span class="pre">false</span></code>, CodeIgniter will not try to protect your field or table names.
This is useful if you need a compound select statement where automatic
escaping of fields may break them.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;(SELECT SUM(payments.amount) FROM payments WHERE payments.invoice_id=4) AS amount_paid&#39;</span><span class="p">,</span> <span class="k">false</span><span class="p">);</span>
<span class="nv">$query</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span>
</pre></div>
</div>
<section id="rawsql">
<span id="query-builder-select-rawsql"></span><h5>RawSql<a class="headerlink" href="#rawsql" title="Permalink to this headline"></a></h5>
<p>Since v4.2.0, <code class="docutils literal notranslate"><span class="pre">$builder-&gt;select()</span></code> accepts a <code class="docutils literal notranslate"><span class="pre">CodeIgniter\Database\RawSql</span></code> instance, which expresses raw SQL strings.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">use</span> <span class="nx">CodeIgniter\Database\RawSql</span><span class="p">;</span>
<span class="nv">$sql</span> <span class="o">=</span> <span class="s1">&#39;REGEXP_SUBSTR(ral_anno,&quot;[0-9]{1,2}([,.][0-9]{1,3})([,.][0-9]{1,3})&quot;) AS ral&#39;</span><span class="p">;</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="k">new</span> <span class="nx">RawSql</span><span class="p">(</span><span class="nv">$sql</span><span class="p">));</span>
<span class="nv">$query</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span>
</pre></div>
</div>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>When you use <code class="docutils literal notranslate"><span class="pre">RawSql</span></code>, you MUST escape the values and protect the identifiers manually. Failure to do so could result in SQL injections.</p>
</div>
</section>
</section>
<section id="builder-selectmax">
<h4>$builder-&gt;selectMax()<a class="headerlink" href="#builder-selectmax" title="Permalink to this headline"></a></h4>
<p>Writes a <strong>SELECT MAX(field)</strong> portion for your query. You can optionally
include a second parameter to rename the resulting field.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">selectMax</span><span class="p">(</span><span class="s1">&#39;age&#39;</span><span class="p">);</span>
<span class="nv">$query</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span>
<span class="c1">// Produces: SELECT MAX(age) as age FROM mytable</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">selectMax</span><span class="p">(</span><span class="s1">&#39;age&#39;</span><span class="p">,</span> <span class="s1">&#39;member_age&#39;</span><span class="p">);</span>
<span class="nv">$query</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span>
<span class="c1">// Produces: SELECT MAX(age) as member_age FROM mytable</span>
</pre></div>
</div>
</section>
<section id="builder-selectmin">
<h4>$builder-&gt;selectMin()<a class="headerlink" href="#builder-selectmin" title="Permalink to this headline"></a></h4>
<p>Writes a <strong>SELECT MIN(field)</strong> portion for your query. As with
<code class="docutils literal notranslate"><span class="pre">selectMax()</span></code>, You can optionally include a second parameter to rename
the resulting field.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">selectMin</span><span class="p">(</span><span class="s1">&#39;age&#39;</span><span class="p">);</span>
<span class="nv">$query</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span>
<span class="c1">// Produces: SELECT MIN(age) as age FROM mytable</span>
</pre></div>
</div>
</section>
<section id="builder-selectavg">
<h4>$builder-&gt;selectAvg()<a class="headerlink" href="#builder-selectavg" title="Permalink to this headline"></a></h4>
<p>Writes a <strong>SELECT AVG(field)</strong> portion for your query. As with
<code class="docutils literal notranslate"><span class="pre">selectMax()</span></code>, You can optionally include a second parameter to rename
the resulting field.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">selectAvg</span><span class="p">(</span><span class="s1">&#39;age&#39;</span><span class="p">);</span>
<span class="nv">$query</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span>
<span class="c1">// Produces: SELECT AVG(age) as age FROM mytable</span>
</pre></div>
</div>
</section>
<section id="builder-selectsum">
<h4>$builder-&gt;selectSum()<a class="headerlink" href="#builder-selectsum" title="Permalink to this headline"></a></h4>
<p>Writes a <strong>SELECT SUM(field)</strong> portion for your query. As with
<code class="docutils literal notranslate"><span class="pre">selectMax()</span></code>, You can optionally include a second parameter to rename
the resulting field.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">selectSum</span><span class="p">(</span><span class="s1">&#39;age&#39;</span><span class="p">);</span>
<span class="nv">$query</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span>
<span class="c1">// Produces: SELECT SUM(age) as age FROM mytable</span>
</pre></div>
</div>
</section>
<section id="builder-selectcount">
<h4>$builder-&gt;selectCount()<a class="headerlink" href="#builder-selectcount" title="Permalink to this headline"></a></h4>
<p>Writes a <strong>SELECT COUNT(field)</strong> portion for your query. As with
<code class="docutils literal notranslate"><span class="pre">selectMax()</span></code>, You can optionally include a second parameter to rename
the resulting field.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This method is particularly helpful when used with <code class="docutils literal notranslate"><span class="pre">groupBy()</span></code>. For
counting results generally see <code class="docutils literal notranslate"><span class="pre">countAll()</span></code> or <code class="docutils literal notranslate"><span class="pre">countAllResults()</span></code>.</p>
</div>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">selectCount</span><span class="p">(</span><span class="s1">&#39;age&#39;</span><span class="p">);</span>
<span class="nv">$query</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span>
<span class="c1">// Produces: SELECT COUNT(age) as age FROM mytable</span>
</pre></div>
</div>
</section>
<section id="builder-selectsubquery">
<h4>$builder-&gt;selectSubquery()<a class="headerlink" href="#builder-selectsubquery" title="Permalink to this headline"></a></h4>
<p>Adds a subquery to the SELECT section.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="nv">$subquery</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">table</span><span class="p">(</span><span class="s1">&#39;countries&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;name&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
<span class="nv">$builder</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">table</span><span class="p">(</span><span class="s1">&#39;users&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;name&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">selectSubquery</span><span class="p">(</span><span class="nv">$subquery</span><span class="p">,</span> <span class="s1">&#39;country&#39;</span><span class="p">);</span>
<span class="nv">$query</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span>
<span class="c1">// Produces: SELECT `name`, (SELECT `name` FROM `countries` WHERE `id` = 1) `country` FROM `users`</span>
</pre></div>
</div>
</section>
</section>
<section id="from">
<h3><a class="toc-backref" href="#id14">From</a><a class="headerlink" href="#from" title="Permalink to this headline"></a></h3>
<section id="builder-from">
<h4>$builder-&gt;from()<a class="headerlink" href="#builder-from" title="Permalink to this headline"></a></h4>
<p>Permits you to write the <strong>FROM</strong> portion of your query:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">table</span><span class="p">(</span><span class="s1">&#39;users&#39;</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;title, content, date&#39;</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">from</span><span class="p">(</span><span class="s1">&#39;mytable&#39;</span><span class="p">);</span>
<span class="nv">$query</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span>
<span class="c1">// Produces: SELECT title, content, date FROM users, mytable</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>As shown earlier, the <strong>FROM</strong> portion of your query can be specified
in the <code class="docutils literal notranslate"><span class="pre">$db-&gt;table()</span></code> method. Additional calls to <code class="docutils literal notranslate"><span class="pre">from()</span></code> will add more tables
to the FROM portion of your query.</p>
</div>
</section>
</section>
<section id="subqueries">
<span id="query-builder-from-subquery"></span><h3><a class="toc-backref" href="#id15">Subqueries</a><a class="headerlink" href="#subqueries" title="Permalink to this headline"></a></h3>
<section id="builder-fromsubquery">
<h4>$builder-&gt;fromSubquery()<a class="headerlink" href="#builder-fromsubquery" title="Permalink to this headline"></a></h4>
<p>Permits you to write part of a <strong>FROM</strong> query as a subquery.</p>
<p>This is where we add a subquery to an existing table:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$subquery</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">table</span><span class="p">(</span><span class="s1">&#39;users&#39;</span><span class="p">);</span>
<span class="nv">$builder</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">table</span><span class="p">(</span><span class="s1">&#39;jobs&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">fromSubquery</span><span class="p">(</span><span class="nv">$subquery</span><span class="p">,</span> <span class="s1">&#39;alias&#39;</span><span class="p">);</span>
<span class="nv">$query</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span>
<span class="c1">// Produces: SELECT * FROM `jobs`, (SELECT * FROM `users`) `alias`</span>
</pre></div>
</div>
<p>Use the <code class="docutils literal notranslate"><span class="pre">$db-&gt;newQuery()</span></code> method to make a subquery the main table:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$subquery</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">table</span><span class="p">(</span><span class="s1">&#39;users&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;id, name&#39;</span><span class="p">);</span>
<span class="nv">$builder</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">newQuery</span><span class="p">()</span><span class="o">-&gt;</span><span class="na">fromSubquery</span><span class="p">(</span><span class="nv">$subquery</span><span class="p">,</span> <span class="s1">&#39;t&#39;</span><span class="p">);</span>
<span class="nv">$query</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span>
<span class="c1">// Produces: SELECT * FROM (SELECT `id`, `name` FROM users) `t`</span>
</pre></div>
</div>
</section>
</section>
<section id="join">
<h3><a class="toc-backref" href="#id16">Join</a><a class="headerlink" href="#join" title="Permalink to this headline"></a></h3>
<section id="builder-join">
<h4>$builder-&gt;join()<a class="headerlink" href="#builder-join" title="Permalink to this headline"></a></h4>
<p>Permits you to write the <strong>JOIN</strong> portion of your query:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">table</span><span class="p">(</span><span class="s1">&#39;blogs&#39;</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;*&#39;</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">join</span><span class="p">(</span><span class="s1">&#39;comments&#39;</span><span class="p">,</span> <span class="s1">&#39;comments.id = blogs.id&#39;</span><span class="p">);</span>
<span class="nv">$query</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span>
<span class="cm">/*</span>
<span class="cm"> * Produces:</span>
<span class="cm"> * SELECT * FROM blogs JOIN comments ON comments.id = blogs.id</span>
<span class="cm"> */</span>
</pre></div>
</div>
<p>Multiple method calls can be made if you need several joins in one
query.</p>
<p>If you need a specific type of <strong>JOIN</strong> you can specify it via the third
parameter of the method. Options are: <code class="docutils literal notranslate"><span class="pre">left</span></code>, <code class="docutils literal notranslate"><span class="pre">right</span></code>, <code class="docutils literal notranslate"><span class="pre">outer</span></code>, <code class="docutils literal notranslate"><span class="pre">inner</span></code>, <code class="docutils literal notranslate"><span class="pre">left</span>
<span class="pre">outer</span></code>, and <code class="docutils literal notranslate"><span class="pre">right</span> <span class="pre">outer</span></code>.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">join</span><span class="p">(</span><span class="s1">&#39;comments&#39;</span><span class="p">,</span> <span class="s1">&#39;comments.id = blogs.id&#39;</span><span class="p">,</span> <span class="s1">&#39;left&#39;</span><span class="p">);</span>
<span class="c1">// Produces: LEFT JOIN comments ON comments.id = blogs.id</span>
</pre></div>
</div>
<section id="query-builder-join-rawsql">
<span id="id1"></span><h5>RawSql<a class="headerlink" href="#query-builder-join-rawsql" title="Permalink to this headline"></a></h5>
<p>Since v4.2.0, <code class="docutils literal notranslate"><span class="pre">$builder-&gt;join()</span></code> accepts a <code class="docutils literal notranslate"><span class="pre">CodeIgniter\Database\RawSql</span></code> instance, which expresses raw SQL strings.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">use</span> <span class="nx">CodeIgniter\Database\RawSql</span><span class="p">;</span>
<span class="nv">$sql</span> <span class="o">=</span> <span class="s1">&#39;user.id = device.user_id AND ((1=1 OR 1=1) OR (1=1 OR 1=1))&#39;</span><span class="p">;</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">join</span><span class="p">(</span><span class="s1">&#39;user&#39;</span><span class="p">,</span> <span class="k">new</span> <span class="nx">RawSql</span><span class="p">(</span><span class="nv">$sql</span><span class="p">),</span> <span class="s1">&#39;LEFT&#39;</span><span class="p">);</span>
<span class="c1">// Produces: LEFT JOIN &quot;user&quot; ON user.id = device.user_id AND ((1=1 OR 1=1) OR (1=1 OR 1=1))</span>
</pre></div>
</div>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>When you use <code class="docutils literal notranslate"><span class="pre">RawSql</span></code>, you MUST escape the values and protect the identifiers manually. Failure to do so could result in SQL injections.</p>
</div>
</section>
</section>
</section>
</section>
<section id="looking-for-specific-data">
<h2><a class="toc-backref" href="#id17">Looking for Specific Data</a><a class="headerlink" href="#looking-for-specific-data" title="Permalink to this headline"></a></h2>
<section id="where">
<h3><a class="toc-backref" href="#id18">Where</a><a class="headerlink" href="#where" title="Permalink to this headline"></a></h3>
<section id="builder-where">
<h4>$builder-&gt;where()<a class="headerlink" href="#builder-where" title="Permalink to this headline"></a></h4>
<p>This method enables you to set <strong>WHERE</strong> clauses using one of five
methods:</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>All values passed to this method are escaped automatically,
producing safer queries, except when using a custom string.</p>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p><code class="docutils literal notranslate"><span class="pre">$builder-&gt;where()</span></code> accepts an optional third parameter. If you set it to
<code class="docutils literal notranslate"><span class="pre">false</span></code>, CodeIgniter will not try to protect your field or table names.</p>
</div>
<section id="simple-key-value-method">
<h5>1. Simple key/value method<a class="headerlink" href="#simple-key-value-method" title="Permalink to this headline"></a></h5>
<blockquote>
<div><div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;name&#39;</span><span class="p">,</span> <span class="nv">$name</span><span class="p">);</span>
<span class="c1">// Produces: WHERE name = &#39;Joe&#39;</span>
</pre></div>
</div>
<p>Notice that the equal sign is added for you.</p>
<p>If you use multiple method calls they will be chained together with
<strong>AND</strong> between them:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;name&#39;</span><span class="p">,</span> <span class="nv">$name</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="nv">$title</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;status&#39;</span><span class="p">,</span> <span class="nv">$status</span><span class="p">);</span>
<span class="c1">// WHERE name = &#39;Joe&#39; AND title = &#39;boss&#39; AND status = &#39;active&#39;</span>
</pre></div>
</div>
</div></blockquote>
</section>
<section id="custom-key-value-method">
<h5>2. Custom key/value method<a class="headerlink" href="#custom-key-value-method" title="Permalink to this headline"></a></h5>
<blockquote>
<div><p>You can include an operator in the first parameter in order to
control the comparison:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;name !=&#39;</span><span class="p">,</span> <span class="nv">$name</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;id &lt;&#39;</span><span class="p">,</span> <span class="nv">$id</span><span class="p">);</span>
<span class="c1">// Produces: WHERE name != &#39;Joe&#39; AND id &lt; 45</span>
</pre></div>
</div>
</div></blockquote>
</section>
<section id="associative-array-method">
<h5>3. Associative array method<a class="headerlink" href="#associative-array-method" title="Permalink to this headline"></a></h5>
<blockquote>
<div><div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$array</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;name&#39;</span> <span class="o">=&gt;</span> <span class="nv">$name</span><span class="p">,</span> <span class="s1">&#39;title&#39;</span> <span class="o">=&gt;</span> <span class="nv">$title</span><span class="p">,</span> <span class="s1">&#39;status&#39;</span> <span class="o">=&gt;</span> <span class="nv">$status</span><span class="p">];</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="nv">$array</span><span class="p">);</span>
<span class="c1">// Produces: WHERE name = &#39;Joe&#39; AND title = &#39;boss&#39; AND status = &#39;active&#39;</span>
</pre></div>
</div>
<p>You can include your own operators using this method as well:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$array</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;name !=&#39;</span> <span class="o">=&gt;</span> <span class="nv">$name</span><span class="p">,</span> <span class="s1">&#39;id &lt;&#39;</span> <span class="o">=&gt;</span> <span class="nv">$id</span><span class="p">,</span> <span class="s1">&#39;date &gt;&#39;</span> <span class="o">=&gt;</span> <span class="nv">$date</span><span class="p">];</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="nv">$array</span><span class="p">);</span>
</pre></div>
</div>
</div></blockquote>
</section>
<section id="custom-string">
<h5>4. Custom string<a class="headerlink" href="#custom-string" title="Permalink to this headline"></a></h5>
<blockquote>
<div><p>You can write your own clauses manually:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$where</span> <span class="o">=</span> <span class="s2">&quot;name=&#39;Joe&#39; AND status=&#39;boss&#39; OR status=&#39;active&#39;&quot;</span><span class="p">;</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="nv">$where</span><span class="p">);</span>
</pre></div>
</div>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>If you are using user-supplied data within the string, you MUST escape the values and protect the identifiers manually. Failure to do so could result in SQL injections.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$name</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">db</span><span class="o">-&gt;</span><span class="na">escape</span><span class="p">(</span><span class="s1">&#39;Joe&#39;</span><span class="p">);</span>
<span class="nv">$where</span> <span class="o">=</span> <span class="s2">&quot;name=</span><span class="si">{</span><span class="nv">$name</span><span class="si">}</span><span class="s2"> AND status=&#39;boss&#39; OR status=&#39;active&#39;&quot;</span><span class="p">;</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="nv">$where</span><span class="p">);</span>
</pre></div>
</div>
</div>
</div></blockquote>
</section>
<section id="query-builder-where-rawsql">
<span id="id2"></span><h5>5. RawSql<a class="headerlink" href="#query-builder-where-rawsql" title="Permalink to this headline"></a></h5>
<blockquote>
<div><p>Since v4.2.0, <code class="docutils literal notranslate"><span class="pre">$builder-&gt;where()</span></code> accepts a <code class="docutils literal notranslate"><span class="pre">CodeIgniter\Database\RawSql</span></code> instance, which expresses raw SQL strings.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">use</span> <span class="nx">CodeIgniter\Database\RawSql</span><span class="p">;</span>
<span class="nv">$sql</span> <span class="o">=</span> <span class="s2">&quot;id &gt; 2 AND name != &#39;Accountant&#39;&quot;</span><span class="p">;</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="k">new</span> <span class="nx">RawSql</span><span class="p">(</span><span class="nv">$sql</span><span class="p">));</span>
</pre></div>
</div>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>When you use <code class="docutils literal notranslate"><span class="pre">RawSql</span></code>, you MUST escape the values and protect the identifiers manually. Failure to do so could result in SQL injections.</p>
</div>
</div></blockquote>
</section>
<section id="query-builder-where-subquery">
<span id="id3"></span><h5>6. Subqueries<a class="headerlink" href="#query-builder-where-subquery" title="Permalink to this headline"></a></h5>
<blockquote>
<div><div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="c1">// With closure</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;advance_amount &lt;&#39;</span><span class="p">,</span> <span class="k">static</span> <span class="nx">fn</span> <span class="p">(</span><span class="nx">BaseBuilder</span> <span class="nv">$builder</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;MAX(advance_amount)&#39;</span><span class="p">,</span> <span class="k">false</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">from</span><span class="p">(</span><span class="s1">&#39;orders&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;id &gt;&#39;</span><span class="p">,</span> <span class="mi">2</span><span class="p">));</span>
<span class="c1">// Produces: WHERE &quot;advance_amount&quot; &lt; (SELECT MAX(advance_amount) FROM &quot;orders&quot; WHERE &quot;id&quot; &gt; 2)</span>
<span class="c1">// With builder directly</span>
<span class="nv">$subQuery</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">table</span><span class="p">(</span><span class="s1">&#39;orders&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;MAX(advance_amount)&#39;</span><span class="p">,</span> <span class="k">false</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;id &gt;&#39;</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;advance_amount &lt;&#39;</span><span class="p">,</span> <span class="nv">$subQuery</span><span class="p">);</span>
</pre></div>
</div>
</div></blockquote>
</section>
</section>
<section id="builder-orwhere">
<h4>$builder-&gt;orWhere()<a class="headerlink" href="#builder-orwhere" title="Permalink to this headline"></a></h4>
<p>This method is identical to the one above, except that multiple
instances are joined by <strong>OR</strong>:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;name !=&#39;</span><span class="p">,</span> <span class="nv">$name</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">orWhere</span><span class="p">(</span><span class="s1">&#39;id &gt;&#39;</span><span class="p">,</span> <span class="nv">$id</span><span class="p">);</span>
<span class="c1">// Produces: WHERE name != &#39;Joe&#39; OR id &gt; 50</span>
</pre></div>
</div>
</section>
<section id="builder-wherein">
<h4>$builder-&gt;whereIn()<a class="headerlink" href="#builder-wherein" title="Permalink to this headline"></a></h4>
<p>Generates a <strong>WHERE</strong> field IN (item, item) SQL query joined with <strong>AND</strong> if
appropriate:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$names</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;Frank&#39;</span><span class="p">,</span> <span class="s1">&#39;Todd&#39;</span><span class="p">,</span> <span class="s1">&#39;James&#39;</span><span class="p">];</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">whereIn</span><span class="p">(</span><span class="s1">&#39;username&#39;</span><span class="p">,</span> <span class="nv">$names</span><span class="p">);</span>
<span class="c1">// Produces: WHERE username IN (&#39;Frank&#39;, &#39;Todd&#39;, &#39;James&#39;)</span>
</pre></div>
</div>
<p>You can use subqueries instead of an array of values:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="c1">// With closure</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">whereIn</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="k">static</span> <span class="nx">fn</span> <span class="p">(</span><span class="nx">BaseBuilder</span> <span class="nv">$builder</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;job_id&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">from</span><span class="p">(</span><span class="s1">&#39;users_jobs&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;user_id&#39;</span><span class="p">,</span> <span class="mi">3</span><span class="p">));</span>
<span class="c1">// Produces: WHERE &quot;id&quot; IN (SELECT &quot;job_id&quot; FROM &quot;users_jobs&quot; WHERE &quot;user_id&quot; = 3)</span>
<span class="c1">// With builder directly</span>
<span class="nv">$subQuery</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">table</span><span class="p">(</span><span class="s1">&#39;users_jobs&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;job_id&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;user_id&#39;</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">whereIn</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="nv">$subQuery</span><span class="p">);</span>
</pre></div>
</div>
</section>
<section id="builder-orwherein">
<h4>$builder-&gt;orWhereIn()<a class="headerlink" href="#builder-orwherein" title="Permalink to this headline"></a></h4>
<p>Generates a <strong>WHERE field IN (item, item)</strong> SQL query joined with <strong>OR</strong> if
appropriate:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$names</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;Frank&#39;</span><span class="p">,</span> <span class="s1">&#39;Todd&#39;</span><span class="p">,</span> <span class="s1">&#39;James&#39;</span><span class="p">];</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">orWhereIn</span><span class="p">(</span><span class="s1">&#39;username&#39;</span><span class="p">,</span> <span class="nv">$names</span><span class="p">);</span>
<span class="c1">// Produces: OR username IN (&#39;Frank&#39;, &#39;Todd&#39;, &#39;James&#39;)</span>
</pre></div>
</div>
<p>You can use subqueries instead of an array of values:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="c1">// With closure</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">orWhereIn</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="k">static</span> <span class="nx">fn</span> <span class="p">(</span><span class="nx">BaseBuilder</span> <span class="nv">$builder</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;job_id&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">from</span><span class="p">(</span><span class="s1">&#39;users_jobs&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;user_id&#39;</span><span class="p">,</span> <span class="mi">3</span><span class="p">));</span>
<span class="c1">// Produces: OR &quot;id&quot; IN (SELECT &quot;job_id&quot; FROM &quot;users_jobs&quot; WHERE &quot;user_id&quot; = 3)</span>
<span class="c1">// With builder directly</span>
<span class="nv">$subQuery</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">table</span><span class="p">(</span><span class="s1">&#39;users_jobs&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;job_id&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;user_id&#39;</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">orWhereIn</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="nv">$subQuery</span><span class="p">);</span>
</pre></div>
</div>
</section>
<section id="builder-wherenotin">
<h4>$builder-&gt;whereNotIn()<a class="headerlink" href="#builder-wherenotin" title="Permalink to this headline"></a></h4>
<p>Generates a <strong>WHERE field NOT IN (item, item)</strong> SQL query joined with
<strong>AND</strong> if appropriate:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$names</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;Frank&#39;</span><span class="p">,</span> <span class="s1">&#39;Todd&#39;</span><span class="p">,</span> <span class="s1">&#39;James&#39;</span><span class="p">];</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">whereNotIn</span><span class="p">(</span><span class="s1">&#39;username&#39;</span><span class="p">,</span> <span class="nv">$names</span><span class="p">);</span>
<span class="c1">// Produces: WHERE username NOT IN (&#39;Frank&#39;, &#39;Todd&#39;, &#39;James&#39;)</span>
</pre></div>
</div>
<p>You can use subqueries instead of an array of values:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="c1">// With closure</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">whereNotIn</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="k">static</span> <span class="nx">fn</span> <span class="p">(</span><span class="nx">BaseBuilder</span> <span class="nv">$builder</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;job_id&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">from</span><span class="p">(</span><span class="s1">&#39;users_jobs&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;user_id&#39;</span><span class="p">,</span> <span class="mi">3</span><span class="p">));</span>
<span class="c1">// Produces: WHERE &quot;id&quot; NOT IN (SELECT &quot;job_id&quot; FROM &quot;users_jobs&quot; WHERE &quot;user_id&quot; = 3)</span>
<span class="c1">// With builder directly</span>
<span class="nv">$subQuery</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">table</span><span class="p">(</span><span class="s1">&#39;users_jobs&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;job_id&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;user_id&#39;</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">whereNotIn</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="nv">$subQuery</span><span class="p">);</span>
</pre></div>
</div>
</section>
<section id="builder-orwherenotin">
<h4>$builder-&gt;orWhereNotIn()<a class="headerlink" href="#builder-orwherenotin" title="Permalink to this headline"></a></h4>
<p>Generates a <strong>WHERE field NOT IN (item, item)</strong> SQL query joined with <strong>OR</strong>
if appropriate:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$names</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;Frank&#39;</span><span class="p">,</span> <span class="s1">&#39;Todd&#39;</span><span class="p">,</span> <span class="s1">&#39;James&#39;</span><span class="p">];</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">orWhereNotIn</span><span class="p">(</span><span class="s1">&#39;username&#39;</span><span class="p">,</span> <span class="nv">$names</span><span class="p">);</span>
<span class="c1">// Produces: OR username NOT IN (&#39;Frank&#39;, &#39;Todd&#39;, &#39;James&#39;)</span>
</pre></div>
</div>
<p>You can use subqueries instead of an array of values:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="c1">// With closure</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">orWhereNotIn</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="k">static</span> <span class="nx">fn</span> <span class="p">(</span><span class="nx">BaseBuilder</span> <span class="nv">$builder</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;job_id&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">from</span><span class="p">(</span><span class="s1">&#39;users_jobs&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;user_id&#39;</span><span class="p">,</span> <span class="mi">3</span><span class="p">));</span>
<span class="c1">// Produces: OR &quot;id&quot; NOT IN (SELECT &quot;job_id&quot; FROM &quot;users_jobs&quot; WHERE &quot;user_id&quot; = 3)</span>
<span class="c1">// With builder directly</span>
<span class="nv">$subQuery</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">table</span><span class="p">(</span><span class="s1">&#39;users_jobs&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;job_id&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;user_id&#39;</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">orWhereNotIn</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="nv">$subQuery</span><span class="p">);</span>
</pre></div>
</div>
</section>
</section>
</section>
<section id="looking-for-similar-data">
<h2><a class="toc-backref" href="#id19">Looking for Similar Data</a><a class="headerlink" href="#looking-for-similar-data" title="Permalink to this headline"></a></h2>
<section id="like">
<h3><a class="toc-backref" href="#id20">Like</a><a class="headerlink" href="#like" title="Permalink to this headline"></a></h3>
<section id="builder-like">
<h4>$builder-&gt;like()<a class="headerlink" href="#builder-like" title="Permalink to this headline"></a></h4>
<p>This method enables you to generate <strong>LIKE</strong> clauses, useful for doing
searches.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>All values passed to this method are escaped automatically.</p>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>All <code class="docutils literal notranslate"><span class="pre">like*</span></code> method variations can be forced to perform case-insensitive searches by passing
a fifth parameter of <code class="docutils literal notranslate"><span class="pre">true</span></code> to the method. This will use platform-specific features where available
otherwise, will force the values to be lowercase, i.e., <code class="docutils literal notranslate"><span class="pre">WHERE</span> <span class="pre">LOWER(column)</span> <span class="pre">LIKE</span> <span class="pre">'%search%'</span></code>. This
may require indexes to be made for <code class="docutils literal notranslate"><span class="pre">LOWER(column)</span></code> instead of <code class="docutils literal notranslate"><span class="pre">column</span></code> to be effective.</p>
</div>
<section id="id4">
<h5>1. Simple key/value method<a class="headerlink" href="#id4" title="Permalink to this headline"></a></h5>
<blockquote>
<div><div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">like</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;match&#39;</span><span class="p">);</span>
<span class="c1">// Produces: WHERE `title` LIKE &#39;%match%&#39; ESCAPE &#39;!&#39;</span>
</pre></div>
</div>
<p>If you use multiple method calls they will be chained together with
<strong>AND</strong> between them:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">like</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;match&#39;</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">like</span><span class="p">(</span><span class="s1">&#39;body&#39;</span><span class="p">,</span> <span class="s1">&#39;match&#39;</span><span class="p">);</span>
<span class="c1">// WHERE `title` LIKE &#39;%match%&#39; ESCAPE &#39;!&#39; AND `body` LIKE &#39;%match%&#39; ESCAPE &#39;!&#39;</span>
</pre></div>
</div>
<p>If you want to control where the wildcard (<strong>%</strong>) is placed, you can use
an optional third argument. Your options are <code class="docutils literal notranslate"><span class="pre">before</span></code>, <code class="docutils literal notranslate"><span class="pre">after</span></code> and
<code class="docutils literal notranslate"><span class="pre">both</span></code> (which is the default).</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">like</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;match&#39;</span><span class="p">,</span> <span class="s1">&#39;before&#39;</span><span class="p">);</span> <span class="c1">// Produces: WHERE `title` LIKE &#39;%match&#39; ESCAPE &#39;!&#39;</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">like</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;match&#39;</span><span class="p">,</span> <span class="s1">&#39;after&#39;</span><span class="p">);</span> <span class="c1">// Produces: WHERE `title` LIKE &#39;match%&#39; ESCAPE &#39;!&#39;</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">like</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;match&#39;</span><span class="p">,</span> <span class="s1">&#39;both&#39;</span><span class="p">);</span> <span class="c1">// Produces: WHERE `title` LIKE &#39;%match%&#39; ESCAPE &#39;!&#39;</span>
</pre></div>
</div>
</div></blockquote>
</section>
<section id="id5">
<h5>2. Associative array method<a class="headerlink" href="#id5" title="Permalink to this headline"></a></h5>
<blockquote>
<div><div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$array</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;title&#39;</span> <span class="o">=&gt;</span> <span class="nv">$match</span><span class="p">,</span> <span class="s1">&#39;page1&#39;</span> <span class="o">=&gt;</span> <span class="nv">$match</span><span class="p">,</span> <span class="s1">&#39;page2&#39;</span> <span class="o">=&gt;</span> <span class="nv">$match</span><span class="p">];</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">like</span><span class="p">(</span><span class="nv">$array</span><span class="p">);</span>
<span class="c1">// WHERE `title` LIKE &#39;%match%&#39; ESCAPE &#39;!&#39; AND `page1` LIKE &#39;%match%&#39; ESCAPE &#39;!&#39; AND `page2` LIKE &#39;%match%&#39; ESCAPE &#39;!&#39;</span>
</pre></div>
</div>
</div></blockquote>
</section>
<section id="query-builder-like-rawsql">
<span id="id6"></span><h5>3. RawSql<a class="headerlink" href="#query-builder-like-rawsql" title="Permalink to this headline"></a></h5>
<blockquote>
<div><p>Since v4.2.0, <code class="docutils literal notranslate"><span class="pre">$builder-&gt;like()</span></code> accepts a <code class="docutils literal notranslate"><span class="pre">CodeIgniter\Database\RawSql</span></code> instance, which expresses raw SQL strings.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">use</span> <span class="nx">CodeIgniter\Database\RawSql</span><span class="p">;</span>
<span class="nv">$sql</span> <span class="o">=</span> <span class="s2">&quot;CONCAT(users.name, &#39; &#39;, IF(users.surname IS NULL OR users.surname = &#39;&#39;, &#39;&#39;, users.surname))&quot;</span><span class="p">;</span>
<span class="nv">$rawSql</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">RawSql</span><span class="p">(</span><span class="nv">$sql</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">like</span><span class="p">(</span><span class="nv">$rawSql</span><span class="p">,</span> <span class="s1">&#39;value&#39;</span><span class="p">,</span> <span class="s1">&#39;both&#39;</span><span class="p">);</span>
</pre></div>
</div>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>When you use <code class="docutils literal notranslate"><span class="pre">RawSql</span></code>, you MUST escape the values and protect the identifiers manually. Failure to do so could result in SQL injections.</p>
</div>
</div></blockquote>
</section>
</section>
<section id="builder-orlike">
<h4>$builder-&gt;orLike()<a class="headerlink" href="#builder-orlike" title="Permalink to this headline"></a></h4>
<p>This method is identical to the one above, except that multiple
instances are joined by <strong>OR</strong>:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">like</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;match&#39;</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">orLike</span><span class="p">(</span><span class="s1">&#39;body&#39;</span><span class="p">,</span> <span class="nv">$match</span><span class="p">);</span>
<span class="c1">// WHERE `title` LIKE &#39;%match%&#39; ESCAPE &#39;!&#39; OR `body` LIKE &#39;%match%&#39; ESCAPE &#39;!&#39;</span>
</pre></div>
</div>
</section>
<section id="builder-notlike">
<h4>$builder-&gt;notLike()<a class="headerlink" href="#builder-notlike" title="Permalink to this headline"></a></h4>
<p>This method is identical to <code class="docutils literal notranslate"><span class="pre">like()</span></code>, except that it generates
<strong>NOT LIKE</strong> statements:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">notLike</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;match&#39;</span><span class="p">);</span> <span class="c1">// WHERE `title` NOT LIKE &#39;%match% ESCAPE &#39;!&#39;</span>
</pre></div>
</div>
</section>
<section id="builder-ornotlike">
<h4>$builder-&gt;orNotLike()<a class="headerlink" href="#builder-ornotlike" title="Permalink to this headline"></a></h4>
<p>This method is identical to <code class="docutils literal notranslate"><span class="pre">notLike()</span></code>, except that multiple
instances are joined by <strong>OR</strong>:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">like</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;match&#39;</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">orNotLike</span><span class="p">(</span><span class="s1">&#39;body&#39;</span><span class="p">,</span> <span class="s1">&#39;match&#39;</span><span class="p">);</span>
<span class="c1">// WHERE `title` LIKE &#39;%match% OR `body` NOT LIKE &#39;%match%&#39; ESCAPE &#39;!&#39;</span>
</pre></div>
</div>
</section>
<section id="builder-groupby">
<h4>$builder-&gt;groupBy()<a class="headerlink" href="#builder-groupby" title="Permalink to this headline"></a></h4>
<p>Permits you to write the <strong>GROUP BY</strong> portion of your query:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">groupBy</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">);</span>
<span class="c1">// Produces: GROUP BY title</span>
</pre></div>
</div>
<p>You can also pass an array of multiple values as well:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">groupBy</span><span class="p">([</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;date&#39;</span><span class="p">]);</span>
<span class="c1">// Produces: GROUP BY title, date</span>
</pre></div>
</div>
</section>
<section id="builder-distinct">
<h4>$builder-&gt;distinct()<a class="headerlink" href="#builder-distinct" title="Permalink to this headline"></a></h4>
<p>Adds the <strong>DISTINCT</strong> keyword to a query</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">distinct</span><span class="p">();</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span>
<span class="c1">// Produces: SELECT DISTINCT * FROM mytable</span>
</pre></div>
</div>
</section>
<section id="builder-having">
<h4>$builder-&gt;having()<a class="headerlink" href="#builder-having" title="Permalink to this headline"></a></h4>
<p>Permits you to write the <strong>HAVING</strong> portion of your query. There are 2
possible syntaxes, 1 argument or 2:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">having</span><span class="p">(</span><span class="s1">&#39;user_id = 45&#39;</span><span class="p">);</span> <span class="c1">// Produces: HAVING user_id = 45</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">having</span><span class="p">(</span><span class="s1">&#39;user_id&#39;</span><span class="p">,</span> <span class="mi">45</span><span class="p">);</span> <span class="c1">// Produces: HAVING user_id = 45</span>
</pre></div>
</div>
<p>You can also pass an array of multiple values as well:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">having</span><span class="p">([</span><span class="s1">&#39;title =&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;My Title&#39;</span><span class="p">,</span> <span class="s1">&#39;id &lt;&#39;</span> <span class="o">=&gt;</span> <span class="nv">$id</span><span class="p">]);</span>
<span class="c1">// Produces: HAVING title = &#39;My Title&#39;, id &lt; 45</span>
</pre></div>
</div>
<p>If you are using a database that CodeIgniter escapes values for, you
can prevent escaping content by passing an optional third argument, and
setting it to <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">having</span><span class="p">(</span><span class="s1">&#39;user_id&#39;</span><span class="p">,</span> <span class="mi">45</span><span class="p">);</span> <span class="c1">// Produces: HAVING `user_id` = 45 in some databases such as MySQL</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">having</span><span class="p">(</span><span class="s1">&#39;user_id&#39;</span><span class="p">,</span> <span class="mi">45</span><span class="p">,</span> <span class="k">false</span><span class="p">);</span> <span class="c1">// Produces: HAVING user_id = 45</span>
</pre></div>
</div>
</section>
<section id="builder-orhaving">
<h4>$builder-&gt;orHaving()<a class="headerlink" href="#builder-orhaving" title="Permalink to this headline"></a></h4>
<p>Identical to <code class="docutils literal notranslate"><span class="pre">having()</span></code>, only separates multiple clauses with <strong>OR</strong>.</p>
</section>
<section id="builder-havingin">
<h4>$builder-&gt;havingIn()<a class="headerlink" href="#builder-havingin" title="Permalink to this headline"></a></h4>
<p>Generates a <strong>HAVING field IN (item, item)</strong> SQL query joined with <strong>AND</strong> if
appropriate:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$groups</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">];</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">havingIn</span><span class="p">(</span><span class="s1">&#39;group_id&#39;</span><span class="p">,</span> <span class="nv">$groups</span><span class="p">);</span>
<span class="c1">// Produces: HAVING group_id IN (1, 2, 3)</span>
</pre></div>
</div>
<p>You can use subqueries instead of an array of values:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="c1">// With closure</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">havingIn</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="k">static</span> <span class="nx">fn</span> <span class="p">(</span><span class="nx">BaseBuilder</span> <span class="nv">$builder</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;user_id&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">from</span><span class="p">(</span><span class="s1">&#39;users_jobs&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;group_id&#39;</span><span class="p">,</span> <span class="mi">3</span><span class="p">));</span>
<span class="c1">// Produces: HAVING &quot;id&quot; IN (SELECT &quot;user_id&quot; FROM &quot;users_jobs&quot; WHERE &quot;group_id&quot; = 3)</span>
<span class="c1">// With builder directly</span>
<span class="nv">$subQuery</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">table</span><span class="p">(</span><span class="s1">&#39;users_jobs&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;user_id&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;group_id&#39;</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">havingIn</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="nv">$subQuery</span><span class="p">);</span>
</pre></div>
</div>
</section>
<section id="builder-orhavingin">
<h4>$builder-&gt;orHavingIn()<a class="headerlink" href="#builder-orhavingin" title="Permalink to this headline"></a></h4>
<p>Generates a <strong>HAVING field IN (item, item)</strong> SQL query joined with <strong>OR</strong> if
appropriate</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$groups</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">];</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">orHavingIn</span><span class="p">(</span><span class="s1">&#39;group_id&#39;</span><span class="p">,</span> <span class="nv">$groups</span><span class="p">);</span>
<span class="c1">// Produces: OR group_id IN (1, 2, 3)</span>
</pre></div>
</div>
<p>You can use subqueries instead of an array of values:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="c1">// With closure</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">orHavingIn</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="k">static</span> <span class="nx">fn</span> <span class="p">(</span><span class="nx">BaseBuilder</span> <span class="nv">$builder</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;user_id&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">from</span><span class="p">(</span><span class="s1">&#39;users_jobs&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;group_id&#39;</span><span class="p">,</span> <span class="mi">3</span><span class="p">));</span>
<span class="c1">// Produces: OR &quot;id&quot; IN (SELECT &quot;user_id&quot; FROM &quot;users_jobs&quot; WHERE &quot;group_id&quot; = 3)</span>
<span class="c1">// With builder directly</span>
<span class="nv">$subQuery</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">table</span><span class="p">(</span><span class="s1">&#39;users_jobs&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;user_id&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;group_id&#39;</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">orHavingIn</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="nv">$subQuery</span><span class="p">);</span>
</pre></div>
</div>
</section>
<section id="builder-havingnotin">
<h4>$builder-&gt;havingNotIn()<a class="headerlink" href="#builder-havingnotin" title="Permalink to this headline"></a></h4>
<p>Generates a <strong>HAVING field NOT IN (item, item)</strong> SQL query joined with
<strong>AND</strong> if appropriate</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$groups</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">];</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">havingNotIn</span><span class="p">(</span><span class="s1">&#39;group_id&#39;</span><span class="p">,</span> <span class="nv">$groups</span><span class="p">);</span>
<span class="c1">// Produces: HAVING group_id NOT IN (1, 2, 3)</span>
</pre></div>
</div>
<p>You can use subqueries instead of an array of values:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="c1">// With closure</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">havingNotIn</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="k">static</span> <span class="nx">fn</span> <span class="p">(</span><span class="nx">BaseBuilder</span> <span class="nv">$builder</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;user_id&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">from</span><span class="p">(</span><span class="s1">&#39;users_jobs&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;group_id&#39;</span><span class="p">,</span> <span class="mi">3</span><span class="p">));</span>
<span class="c1">// Produces: HAVING &quot;id&quot; NOT IN (SELECT &quot;user_id&quot; FROM &quot;users_jobs&quot; WHERE &quot;group_id&quot; = 3)</span>
<span class="c1">// With builder directly</span>
<span class="nv">$subQuery</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">table</span><span class="p">(</span><span class="s1">&#39;users_jobs&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;user_id&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;group_id&#39;</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">havingNotIn</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="nv">$subQuery</span><span class="p">);</span>
</pre></div>
</div>
</section>
<section id="builder-orhavingnotin">
<h4>$builder-&gt;orHavingNotIn()<a class="headerlink" href="#builder-orhavingnotin" title="Permalink to this headline"></a></h4>
<p>Generates a <strong>HAVING field NOT IN (item, item)</strong> SQL query joined with <strong>OR</strong>
if appropriate</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$groups</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">];</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">havingNotIn</span><span class="p">(</span><span class="s1">&#39;group_id&#39;</span><span class="p">,</span> <span class="nv">$groups</span><span class="p">);</span>
<span class="c1">// Produces: OR group_id NOT IN (1, 2, 3)</span>
</pre></div>
</div>
<p>You can use subqueries instead of an array of values:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="c1">// With closure</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">orHavingNotIn</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="k">static</span> <span class="nx">fn</span> <span class="p">(</span><span class="nx">BaseBuilder</span> <span class="nv">$builder</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;user_id&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">from</span><span class="p">(</span><span class="s1">&#39;users_jobs&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;group_id&#39;</span><span class="p">,</span> <span class="mi">3</span><span class="p">));</span>
<span class="c1">// Produces: OR &quot;id&quot; NOT IN (SELECT &quot;user_id&quot; FROM &quot;users_jobs&quot; WHERE &quot;group_id&quot; = 3)</span>
<span class="c1">// With builder directly</span>
<span class="nv">$subQuery</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">table</span><span class="p">(</span><span class="s1">&#39;users_jobs&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;user_id&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;group_id&#39;</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">orHavingNotIn</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="nv">$subQuery</span><span class="p">);</span>
</pre></div>
</div>
</section>
<section id="builder-havinglike">
<h4>$builder-&gt;havingLike()<a class="headerlink" href="#builder-havinglike" title="Permalink to this headline"></a></h4>
<p>This method enables you to generate <strong>LIKE</strong> clauses for <strong>HAVING</strong> part or the query, useful for doing
searches.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>All values passed to this method are escaped automatically.</p>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>All <code class="docutils literal notranslate"><span class="pre">havingLike*()</span></code> method variations can be forced to perform case-insensitive searches by passing
a fifth parameter of <code class="docutils literal notranslate"><span class="pre">true</span></code> to the method. This will use platform-specific features where available
otherwise, will force the values to be lowercase, i.e., <code class="docutils literal notranslate"><span class="pre">HAVING</span> <span class="pre">LOWER(column)</span> <span class="pre">LIKE</span> <span class="pre">'%search%'</span></code>. This
may require indexes to be made for <code class="docutils literal notranslate"><span class="pre">LOWER(column)</span></code> instead of <code class="docutils literal notranslate"><span class="pre">column</span></code> to be effective.</p>
</div>
<section id="id7">
<h5>1. Simple key/value method<a class="headerlink" href="#id7" title="Permalink to this headline"></a></h5>
<blockquote>
<div><div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">havingLike</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;match&#39;</span><span class="p">);</span>
<span class="c1">// Produces: HAVING `title` LIKE &#39;%match%&#39; ESCAPE &#39;!&#39;</span>
</pre></div>
</div>
<p>If you use multiple method calls they will be chained together with
<strong>AND</strong> between them:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">havingLike</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;match&#39;</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">havingLike</span><span class="p">(</span><span class="s1">&#39;body&#39;</span><span class="p">,</span> <span class="s1">&#39;match&#39;</span><span class="p">);</span>
<span class="c1">// HAVING `title` LIKE &#39;%match%&#39; ESCAPE &#39;!&#39; AND `body` LIKE &#39;%match% ESCAPE &#39;!&#39;</span>
</pre></div>
</div>
<p>If you want to control where the wildcard (<strong>%</strong>) is placed, you can use
an optional third argument. Your options are <code class="docutils literal notranslate"><span class="pre">before</span></code>, <code class="docutils literal notranslate"><span class="pre">after</span></code> and
<code class="docutils literal notranslate"><span class="pre">both</span></code> (which is the default).</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">havingLike</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;match&#39;</span><span class="p">,</span> <span class="s1">&#39;before&#39;</span><span class="p">);</span> <span class="c1">// Produces: HAVING `title` LIKE &#39;%match&#39; ESCAPE &#39;!&#39;</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">havingLike</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;match&#39;</span><span class="p">,</span> <span class="s1">&#39;after&#39;</span><span class="p">);</span> <span class="c1">// Produces: HAVING `title` LIKE &#39;match%&#39; ESCAPE &#39;!&#39;</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">havingLike</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;match&#39;</span><span class="p">,</span> <span class="s1">&#39;both&#39;</span><span class="p">);</span> <span class="c1">// Produces: HAVING `title` LIKE &#39;%match%&#39; ESCAPE &#39;!&#39;</span>
</pre></div>
</div>
</div></blockquote>
</section>
<section id="id8">
<h5>2. Associative array method<a class="headerlink" href="#id8" title="Permalink to this headline"></a></h5>
<blockquote>
<div><div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$array</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;title&#39;</span> <span class="o">=&gt;</span> <span class="nv">$match</span><span class="p">,</span> <span class="s1">&#39;page1&#39;</span> <span class="o">=&gt;</span> <span class="nv">$match</span><span class="p">,</span> <span class="s1">&#39;page2&#39;</span> <span class="o">=&gt;</span> <span class="nv">$match</span><span class="p">];</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">havingLike</span><span class="p">(</span><span class="nv">$array</span><span class="p">);</span>
<span class="c1">// HAVING `title` LIKE &#39;%match%&#39; ESCAPE &#39;!&#39; AND `page1` LIKE &#39;%match%&#39; ESCAPE &#39;!&#39; AND `page2` LIKE &#39;%match%&#39; ESCAPE &#39;!&#39;</span>
</pre></div>
</div>
</div></blockquote>
</section>
</section>
<section id="builder-orhavinglike">
<h4>$builder-&gt;orHavingLike()<a class="headerlink" href="#builder-orhavinglike" title="Permalink to this headline"></a></h4>
<p>This method is identical to the one above, except that multiple
instances are joined by <strong>OR</strong>:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">havingLike</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;match&#39;</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">orHavingLike</span><span class="p">(</span><span class="s1">&#39;body&#39;</span><span class="p">,</span> <span class="nv">$match</span><span class="p">);</span>
<span class="c1">// HAVING `title` LIKE &#39;%match%&#39; ESCAPE &#39;!&#39; OR `body` LIKE &#39;%match%&#39; ESCAPE &#39;!&#39;</span>
</pre></div>
</div>
</section>
<section id="builder-nothavinglike">
<h4>$builder-&gt;notHavingLike()<a class="headerlink" href="#builder-nothavinglike" title="Permalink to this headline"></a></h4>
<p>This method is identical to <code class="docutils literal notranslate"><span class="pre">havingLike()</span></code>, except that it generates
<strong>NOT LIKE</strong> statements:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">notHavingLike</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;match&#39;</span><span class="p">);</span>
<span class="c1">// HAVING `title` NOT LIKE &#39;%match% ESCAPE &#39;!&#39;</span>
</pre></div>
</div>
</section>
<section id="builder-ornothavinglike">
<h4>$builder-&gt;orNotHavingLike()<a class="headerlink" href="#builder-ornothavinglike" title="Permalink to this headline"></a></h4>
<p>This method is identical to <code class="docutils literal notranslate"><span class="pre">notHavingLike()</span></code>, except that multiple
instances are joined by <strong>OR</strong>:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">havingLike</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;match&#39;</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">orNotHavingLike</span><span class="p">(</span><span class="s1">&#39;body&#39;</span><span class="p">,</span> <span class="s1">&#39;match&#39;</span><span class="p">);</span>
<span class="c1">// HAVING `title` LIKE &#39;%match% OR `body` NOT LIKE &#39;%match%&#39; ESCAPE &#39;!&#39;</span>
</pre></div>
</div>
</section>
</section>
</section>
<section id="ordering-results">
<h2><a class="toc-backref" href="#id21">Ordering Results</a><a class="headerlink" href="#ordering-results" title="Permalink to this headline"></a></h2>
<section id="orderby">
<h3><a class="toc-backref" href="#id22">OrderBy</a><a class="headerlink" href="#orderby" title="Permalink to this headline"></a></h3>
<section id="builder-orderby">
<h4>$builder-&gt;orderBy()<a class="headerlink" href="#builder-orderby" title="Permalink to this headline"></a></h4>
<p>Lets you set an <strong>ORDER BY</strong> clause.</p>
<p>The first parameter contains the name of the column you would like to order by.</p>
<p>The second parameter lets you set the direction of the result.
Options are <code class="docutils literal notranslate"><span class="pre">ASC</span></code>, <code class="docutils literal notranslate"><span class="pre">DESC</span></code> AND <code class="docutils literal notranslate"><span class="pre">RANDOM</span></code>.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">orderBy</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;DESC&#39;</span><span class="p">);</span>
<span class="c1">// Produces: ORDER BY `title` DESC</span>
</pre></div>
</div>
<p>You can also pass your own string in the first parameter:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">orderBy</span><span class="p">(</span><span class="s1">&#39;title DESC, name ASC&#39;</span><span class="p">);</span>
<span class="c1">// Produces: ORDER BY `title` DESC, `name` ASC</span>
</pre></div>
</div>
<p>Or multiple method calls can be made if you need multiple fields.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">orderBy</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;DESC&#39;</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">orderBy</span><span class="p">(</span><span class="s1">&#39;name&#39;</span><span class="p">,</span> <span class="s1">&#39;ASC&#39;</span><span class="p">);</span>
<span class="c1">// Produces: ORDER BY `title` DESC, `name` ASC</span>
</pre></div>
</div>
<p>If you choose the <code class="docutils literal notranslate"><span class="pre">RANDOM</span></code> direction option, then the first parameters will
be ignored, unless you specify a numeric seed value.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">orderBy</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;RANDOM&#39;</span><span class="p">);</span>
<span class="c1">// Produces: ORDER BY RAND()</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">orderBy</span><span class="p">(</span><span class="mi">42</span><span class="p">,</span> <span class="s1">&#39;RANDOM&#39;</span><span class="p">);</span>
<span class="c1">// Produces: ORDER BY RAND(42)</span>
</pre></div>
</div>
</section>
</section>
</section>
<section id="limiting-or-counting-results">
<h2><a class="toc-backref" href="#id23">Limiting or Counting Results</a><a class="headerlink" href="#limiting-or-counting-results" title="Permalink to this headline"></a></h2>
<section id="limit">
<h3><a class="toc-backref" href="#id24">Limit</a><a class="headerlink" href="#limit" title="Permalink to this headline"></a></h3>
<section id="builder-limit">
<h4>$builder-&gt;limit()<a class="headerlink" href="#builder-limit" title="Permalink to this headline"></a></h4>
<p>Lets you limit the number of rows you would like returned by the query:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">limit</span><span class="p">(</span><span class="mi">10</span><span class="p">);</span>
<span class="c1">// Produces: LIMIT 10</span>
</pre></div>
</div>
<p>The second parameter lets you set a result offset.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">limit</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">20</span><span class="p">);</span>
<span class="c1">// Produces: LIMIT 20, 10 (in MySQL. Other databases have slightly different syntax)</span>
</pre></div>
</div>
</section>
<section id="builder-countallresults">
<h4>$builder-&gt;countAllResults()<a class="headerlink" href="#builder-countallresults" title="Permalink to this headline"></a></h4>
<p>Permits you to determine the number of rows in a particular Query
Builder query. Queries will accept Query Builder restrictors such as
<code class="docutils literal notranslate"><span class="pre">where()</span></code>, <code class="docutils literal notranslate"><span class="pre">orWhere()</span></code>, <code class="docutils literal notranslate"><span class="pre">like()</span></code>, <code class="docutils literal notranslate"><span class="pre">orLike()</span></code>, etc. Example:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">echo</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">countAllResults</span><span class="p">();</span> <span class="c1">// Produces an integer, like 25</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">like</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;match&#39;</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">from</span><span class="p">(</span><span class="s1">&#39;my_table&#39;</span><span class="p">);</span>
<span class="k">echo</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">countAllResults</span><span class="p">();</span> <span class="c1">// Produces an integer, like 17</span>
</pre></div>
</div>
<p>However, this method also resets any field values that you may have passed
to <code class="docutils literal notranslate"><span class="pre">select()</span></code>. If you need to keep them, you can pass <code class="docutils literal notranslate"><span class="pre">false</span></code> as the
first parameter.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">echo</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">countAllResults</span><span class="p">(</span><span class="k">false</span><span class="p">);</span> <span class="c1">// Produces an integer, like 17</span>
</pre></div>
</div>
</section>
<section id="builder-countall">
<h4>$builder-&gt;countAll()<a class="headerlink" href="#builder-countall" title="Permalink to this headline"></a></h4>
<p>Permits you to determine the number of rows in a particular table.
Example:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">echo</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">countAll</span><span class="p">();</span> <span class="c1">// Produces an integer, like 25</span>
</pre></div>
</div>
<p>As is in <code class="docutils literal notranslate"><span class="pre">countAllResult()</span></code> method, this method resets any field values that you may have passed
to <code class="docutils literal notranslate"><span class="pre">select()</span></code> as well. If you need to keep them, you can pass <code class="docutils literal notranslate"><span class="pre">false</span></code> as the
first parameter.</p>
</section>
</section>
</section>
<section id="union-queries">
<span id="query-builder-union"></span><h2><a class="toc-backref" href="#id25">Union queries</a><a class="headerlink" href="#union-queries" title="Permalink to this headline"></a></h2>
<section id="union">
<h3><a class="toc-backref" href="#id26">Union</a><a class="headerlink" href="#union" title="Permalink to this headline"></a></h3>
<section id="builder-union">
<h4>$builder-&gt;union()<a class="headerlink" href="#builder-union" title="Permalink to this headline"></a></h4>
<p>Is used to combine the result-set of two or more SELECT statements. It will return only the unique results.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">table</span><span class="p">(</span><span class="s1">&#39;users&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;id, name&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">limit</span><span class="p">(</span><span class="mi">10</span><span class="p">);</span>
<span class="nv">$union</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">table</span><span class="p">(</span><span class="s1">&#39;groups&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;id, name&#39;</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">union</span><span class="p">(</span><span class="nv">$union</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span>
<span class="cm">/*</span>
<span class="cm"> * Produces:</span>
<span class="cm"> * SELECT * FROM (SELECT `id`, `name` FROM `users` LIMIT 10) uwrp0</span>
<span class="cm"> * UNION SELECT * FROM (SELECT `id`, `name` FROM `groups`) uwrp1</span>
<span class="cm"> */</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>For correct work with DBMS (such as MSSQL and Oracle) queries are wrapped in <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">*</span> <span class="pre">FROM</span> <span class="pre">(</span> <span class="pre">...</span> <span class="pre">)</span> <span class="pre">alias</span></code>
The main query will always have an alias of <code class="docutils literal notranslate"><span class="pre">uwrp0</span></code>. Each subsequent query added via <code class="docutils literal notranslate"><span class="pre">union()</span></code> will have an
alias <code class="docutils literal notranslate"><span class="pre">uwrpN+1</span></code>.</p>
</div>
<p>All union queries will be added after the main query, regardless of the order in which the <code class="docutils literal notranslate"><span class="pre">union()</span></code> method was
called. That is, the <code class="docutils literal notranslate"><span class="pre">limit()</span></code> or <code class="docutils literal notranslate"><span class="pre">orderBy()</span></code> methods will be relative to the main query, even if called after
<code class="docutils literal notranslate"><span class="pre">union()</span></code>.</p>
<p>In some cases, it may be necessary, for example, to sort or limit the number of records of the query result.
The solution is to use the wrapper created via <code class="docutils literal notranslate"><span class="pre">$db-&gt;newQuery()</span></code>.
In the example below, we get the first 5 users + the last 5 users and sort the result by id:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$union</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">table</span><span class="p">(</span><span class="s1">&#39;users&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;id, name&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">orderBy</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="s1">&#39;DESC&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">limit</span><span class="p">(</span><span class="mi">5</span><span class="p">);</span>
<span class="nv">$builder</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">table</span><span class="p">(</span><span class="s1">&#39;users&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;id, name&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">orderBy</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="s1">&#39;ASC&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">limit</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">union</span><span class="p">(</span><span class="nv">$union</span><span class="p">);</span>
<span class="nv">$db</span><span class="o">-&gt;</span><span class="na">newQuery</span><span class="p">()</span><span class="o">-&gt;</span><span class="na">fromSubquery</span><span class="p">(</span><span class="nv">$builder</span><span class="p">,</span> <span class="s1">&#39;q&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">orderBy</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="s1">&#39;DESC&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span>
<span class="cm">/*</span>
<span class="cm"> * Produces:</span>
<span class="cm"> * SELECT * FROM (</span>
<span class="cm"> * SELECT * FROM (SELECT `id`, `name` FROM `users` ORDER BY `id` ASC LIMIT 5) uwrp0</span>
<span class="cm"> * UNION</span>
<span class="cm"> * SELECT * FROM (SELECT `id`, `name` FROM `users` ORDER BY `id` DESC LIMIT 5) uwrp1</span>
<span class="cm"> * ) q ORDER BY `id` DESC</span>
<span class="cm"> */</span>
</pre></div>
</div>
</section>
<section id="builder-unionall">
<h4>$builder-&gt;unionAll()<a class="headerlink" href="#builder-unionall" title="Permalink to this headline"></a></h4>
<p>The behavior is the same as the <code class="docutils literal notranslate"><span class="pre">union()</span></code> method. However, all results will be returned, not just the unique ones.</p>
</section>
</section>
</section>
<section id="query-grouping">
<h2><a class="toc-backref" href="#id27">Query grouping</a><a class="headerlink" href="#query-grouping" title="Permalink to this headline"></a></h2>
<section id="group">
<h3><a class="toc-backref" href="#id28">Group</a><a class="headerlink" href="#group" title="Permalink to this headline"></a></h3>
<p>Query grouping allows you to create groups of <strong>WHERE</strong> clauses by enclosing them in parentheses. This will allow
you to create queries with complex <strong>WHERE</strong> clauses. Nested groups are supported. Example:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;*&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">from</span><span class="p">(</span><span class="s1">&#39;my_table&#39;</span><span class="p">)</span>
<span class="o">-&gt;</span><span class="na">groupStart</span><span class="p">()</span>
<span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;a&#39;</span><span class="p">,</span> <span class="s1">&#39;a&#39;</span><span class="p">)</span>
<span class="o">-&gt;</span><span class="na">orGroupStart</span><span class="p">()</span>
<span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;b&#39;</span><span class="p">,</span> <span class="s1">&#39;b&#39;</span><span class="p">)</span>
<span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;c&#39;</span><span class="p">,</span> <span class="s1">&#39;c&#39;</span><span class="p">)</span>
<span class="o">-&gt;</span><span class="na">groupEnd</span><span class="p">()</span>
<span class="o">-&gt;</span><span class="na">groupEnd</span><span class="p">()</span>
<span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;d&#39;</span><span class="p">,</span> <span class="s1">&#39;d&#39;</span><span class="p">)</span>
<span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span>
<span class="cm">/*</span>
<span class="cm"> * Generates:</span>
<span class="cm"> * SELECT * FROM (`my_table`) WHERE ( `a` = &#39;a&#39; OR ( `b` = &#39;b&#39; AND `c` = &#39;c&#39; ) ) AND `d` = &#39;d&#39;</span>
<span class="cm"> */</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Groups need to be balanced, make sure every <code class="docutils literal notranslate"><span class="pre">groupStart()</span></code> is matched by a <code class="docutils literal notranslate"><span class="pre">groupEnd()</span></code>.</p>
</div>
<section id="builder-groupstart">
<h4>$builder-&gt;groupStart()<a class="headerlink" href="#builder-groupstart" title="Permalink to this headline"></a></h4>
<p>Starts a new group by adding an opening parenthesis to the <strong>WHERE</strong> clause of the query.</p>
</section>
<section id="builder-orgroupstart">
<h4>$builder-&gt;orGroupStart()<a class="headerlink" href="#builder-orgroupstart" title="Permalink to this headline"></a></h4>
<p>Starts a new group by adding an opening parenthesis to the <strong>WHERE</strong> clause of the query, prefixing it with <strong>OR</strong>.</p>
</section>
<section id="builder-notgroupstart">
<h4>$builder-&gt;notGroupStart()<a class="headerlink" href="#builder-notgroupstart" title="Permalink to this headline"></a></h4>
<p>Starts a new group by adding an opening parenthesis to the <strong>WHERE</strong> clause of the query, prefixing it with <strong>NOT</strong>.</p>
</section>
<section id="builder-ornotgroupstart">
<h4>$builder-&gt;orNotGroupStart()<a class="headerlink" href="#builder-ornotgroupstart" title="Permalink to this headline"></a></h4>
<p>Starts a new group by adding an opening parenthesis to the <strong>WHERE</strong> clause of the query, prefixing it with <strong>OR NOT</strong>.</p>
</section>
<section id="builder-groupend">
<h4>$builder-&gt;groupEnd()<a class="headerlink" href="#builder-groupend" title="Permalink to this headline"></a></h4>
<p>Ends the current group by adding a closing parenthesis to the <strong>WHERE</strong> clause of the query.</p>
</section>
<section id="builder-havinggroupstart">
<h4>$builder-&gt;havingGroupStart()<a class="headerlink" href="#builder-havinggroupstart" title="Permalink to this headline"></a></h4>
<p>Starts a new group by adding an opening parenthesis to the <strong>HAVING</strong> clause of the query.</p>
</section>
<section id="builder-orhavinggroupstart">
<h4>$builder-&gt;orHavingGroupStart()<a class="headerlink" href="#builder-orhavinggroupstart" title="Permalink to this headline"></a></h4>
<p>Starts a new group by adding an opening parenthesis to the <strong>HAVING</strong> clause of the query, prefixing it with <strong>OR</strong>.</p>
</section>
<section id="builder-nothavinggroupstart">
<h4>$builder-&gt;notHavingGroupStart()<a class="headerlink" href="#builder-nothavinggroupstart" title="Permalink to this headline"></a></h4>
<p>Starts a new group by adding an opening parenthesis to the <strong>HAVING</strong> clause of the query, prefixing it with <strong>NOT</strong>.</p>
</section>
<section id="builder-ornothavinggroupstart">
<h4>$builder-&gt;orNotHavingGroupStart()<a class="headerlink" href="#builder-ornothavinggroupstart" title="Permalink to this headline"></a></h4>
<p>Starts a new group by adding an opening parenthesis to the <strong>HAVING</strong> clause of the query, prefixing it with <strong>OR NOT</strong>.</p>
</section>
<section id="builder-havinggroupend">
<h4>$builder-&gt;havingGroupEnd()<a class="headerlink" href="#builder-havinggroupend" title="Permalink to this headline"></a></h4>
<p>Ends the current group by adding a closing parenthesis to the <strong>HAVING</strong> clause of the query.</p>
</section>
</section>
</section>
<section id="inserting-data">
<h2><a class="toc-backref" href="#id29">Inserting Data</a><a class="headerlink" href="#inserting-data" title="Permalink to this headline"></a></h2>
<section id="insert">
<h3><a class="toc-backref" href="#id30">Insert</a><a class="headerlink" href="#insert" title="Permalink to this headline"></a></h3>
<section id="builder-insert">
<h4>$builder-&gt;insert()<a class="headerlink" href="#builder-insert" title="Permalink to this headline"></a></h4>
<p>Generates an insert string based on the data you supply, and runs the
query. You can either pass an <strong>array</strong> or an <strong>object</strong> to the
method. Here is an example using an array:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$data</span> <span class="o">=</span> <span class="p">[</span>
<span class="s1">&#39;title&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;My title&#39;</span><span class="p">,</span>
<span class="s1">&#39;name&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;My Name&#39;</span><span class="p">,</span>
<span class="s1">&#39;date&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;My date&#39;</span><span class="p">,</span>
<span class="p">];</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">insert</span><span class="p">(</span><span class="nv">$data</span><span class="p">);</span>
<span class="c1">// Produces: INSERT INTO mytable (title, name, date) VALUES (&#39;My title&#39;, &#39;My name&#39;, &#39;My date&#39;)</span>
</pre></div>
</div>
<p>The first parameter is an associative array of values.</p>
<p>Here is an example using an object:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">class</span> <span class="nc">Myclass</span>
<span class="p">{</span>
<span class="k">public</span> <span class="nv">$title</span> <span class="o">=</span> <span class="s1">&#39;My Title&#39;</span><span class="p">;</span>
<span class="k">public</span> <span class="nv">$content</span> <span class="o">=</span> <span class="s1">&#39;My Content&#39;</span><span class="p">;</span>
<span class="k">public</span> <span class="nv">$date</span> <span class="o">=</span> <span class="s1">&#39;My Date&#39;</span><span class="p">;</span>
<span class="p">}</span>
<span class="nv">$object</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Myclass</span><span class="p">();</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">insert</span><span class="p">(</span><span class="nv">$object</span><span class="p">);</span>
<span class="c1">// Produces: INSERT INTO mytable (title, content, date) VALUES (&#39;My Title&#39;, &#39;My Content&#39;, &#39;My Date&#39;)</span>
</pre></div>
</div>
<p>The first parameter is an object.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>All values are escaped automatically producing safer queries.</p>
</div>
</section>
<section id="builder-ignore">
<h4>$builder-&gt;ignore()<a class="headerlink" href="#builder-ignore" title="Permalink to this headline"></a></h4>
<p>Generates an insert ignore string based on the data you supply, and runs the
query. So if an entry with the same primary key already exists, the query wont be inserted.
You can optionally pass an <strong>boolean</strong> to the method. Can also be used on <strong>insertBatch</strong>, <strong>update</strong> and <strong>delete</strong> (when supported).
Here is an example using the array of the above example:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$data</span> <span class="o">=</span> <span class="p">[</span>
<span class="s1">&#39;title&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;My title&#39;</span><span class="p">,</span>
<span class="s1">&#39;name&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;My Name&#39;</span><span class="p">,</span>
<span class="s1">&#39;date&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;My date&#39;</span><span class="p">,</span>
<span class="p">];</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">ignore</span><span class="p">(</span><span class="k">true</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">insert</span><span class="p">(</span><span class="nv">$data</span><span class="p">);</span>
<span class="c1">// Produces: INSERT OR IGNORE INTO mytable (title, name, date) VALUES (&#39;My title&#39;, &#39;My name&#39;, &#39;My date&#39;)</span>
</pre></div>
</div>
</section>
<section id="builder-getcompiledinsert">
<h4>$builder-&gt;getCompiledInsert()<a class="headerlink" href="#builder-getcompiledinsert" title="Permalink to this headline"></a></h4>
<p>Compiles the insertion query just like <code class="docutils literal notranslate"><span class="pre">$builder-&gt;insert()</span></code> but does not
<em>run</em> the query. This method simply returns the SQL query as a string.</p>
<p>Example:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$data</span> <span class="o">=</span> <span class="p">[</span>
<span class="s1">&#39;title&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;My title&#39;</span><span class="p">,</span>
<span class="s1">&#39;name&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;My Name&#39;</span><span class="p">,</span>
<span class="s1">&#39;date&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;My date&#39;</span><span class="p">,</span>
<span class="p">];</span>
<span class="nv">$sql</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">set</span><span class="p">(</span><span class="nv">$data</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">getCompiledInsert</span><span class="p">();</span>
<span class="k">echo</span> <span class="nv">$sql</span><span class="p">;</span>
<span class="c1">// Produces string: INSERT INTO mytable (`title`, `name`, `date`) VALUES (&#39;My title&#39;, &#39;My name&#39;, &#39;My date&#39;)</span>
</pre></div>
</div>
<p>The first parameter enables you to set whether or not the query builder query
will be reset (by default it will bejust like <code class="docutils literal notranslate"><span class="pre">$builder-&gt;insert()</span></code>):</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">echo</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">set</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;My Title&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">getCompiledInsert</span><span class="p">(</span><span class="k">false</span><span class="p">);</span>
<span class="c1">// Produces string: INSERT INTO mytable (`title`) VALUES (&#39;My Title&#39;)</span>
<span class="k">echo</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">set</span><span class="p">(</span><span class="s1">&#39;content&#39;</span><span class="p">,</span> <span class="s1">&#39;My Content&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">getCompiledInsert</span><span class="p">();</span>
<span class="c1">// Produces string: INSERT INTO mytable (`title`, `content`) VALUES (&#39;My Title&#39;, &#39;My Content&#39;)</span>
</pre></div>
</div>
<p>The reason the second query worked is that the first parameter is set to <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This method doesnt work for batch inserts.</p>
</div>
</section>
</section>
<section id="insertbatch">
<h3><a class="toc-backref" href="#id31">insertBatch</a><a class="headerlink" href="#insertbatch" title="Permalink to this headline"></a></h3>
<section id="builder-insertbatch">
<h4>$builder-&gt;insertBatch()<a class="headerlink" href="#builder-insertbatch" title="Permalink to this headline"></a></h4>
<p>Generates an insert string based on the data you supply, and runs the
query. You can either pass an <strong>array</strong> or an <strong>object</strong> to the
method. Here is an example using an array:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$data</span> <span class="o">=</span> <span class="p">[</span>
<span class="p">[</span>
<span class="s1">&#39;title&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;My title&#39;</span><span class="p">,</span>
<span class="s1">&#39;name&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;My Name&#39;</span><span class="p">,</span>
<span class="s1">&#39;date&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;My date&#39;</span><span class="p">,</span>
<span class="p">],</span>
<span class="p">[</span>
<span class="s1">&#39;title&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;Another title&#39;</span><span class="p">,</span>
<span class="s1">&#39;name&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;Another Name&#39;</span><span class="p">,</span>
<span class="s1">&#39;date&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;Another date&#39;</span><span class="p">,</span>
<span class="p">],</span>
<span class="p">];</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">insertBatch</span><span class="p">(</span><span class="nv">$data</span><span class="p">);</span>
<span class="c1">// Produces: INSERT INTO mytable (title, name, date) VALUES (&#39;My title&#39;, &#39;My name&#39;, &#39;My date&#39;), (&#39;Another title&#39;, &#39;Another name&#39;, &#39;Another date&#39;)</span>
</pre></div>
</div>
<p>The first parameter is an associative array of values.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>All values are escaped automatically producing safer queries.</p>
</div>
</section>
</section>
</section>
<section id="updating-data">
<h2><a class="toc-backref" href="#id32">Updating Data</a><a class="headerlink" href="#updating-data" title="Permalink to this headline"></a></h2>
<section id="update">
<h3><a class="toc-backref" href="#id33">Update</a><a class="headerlink" href="#update" title="Permalink to this headline"></a></h3>
<section id="builder-replace">
<h4>$builder-&gt;replace()<a class="headerlink" href="#builder-replace" title="Permalink to this headline"></a></h4>
<p>This method executes a <strong>REPLACE</strong> statement, which is basically the SQL
standard for (optional) <strong>DELETE</strong> + <strong>INSERT</strong>, using <em>PRIMARY</em> and <em>UNIQUE</em>
keys as the determining factor.
In our case, it will save you from the need to implement complex
logics with different combinations of <code class="docutils literal notranslate"><span class="pre">select()</span></code>, <code class="docutils literal notranslate"><span class="pre">update()</span></code>,
<code class="docutils literal notranslate"><span class="pre">delete()</span></code> and <code class="docutils literal notranslate"><span class="pre">insert()</span></code> calls.</p>
<p>Example:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$data</span> <span class="o">=</span> <span class="p">[</span>
<span class="s1">&#39;title&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;My title&#39;</span><span class="p">,</span>
<span class="s1">&#39;name&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;My Name&#39;</span><span class="p">,</span>
<span class="s1">&#39;date&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;My date&#39;</span><span class="p">,</span>
<span class="p">];</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">replace</span><span class="p">(</span><span class="nv">$data</span><span class="p">);</span>
<span class="c1">// Executes: REPLACE INTO mytable (title, name, date) VALUES (&#39;My title&#39;, &#39;My name&#39;, &#39;My date&#39;)</span>
</pre></div>
</div>
<p>In the above example, if we assume that the <code class="docutils literal notranslate"><span class="pre">title</span></code> field is our primary
key, then if a row containing <code class="docutils literal notranslate"><span class="pre">My</span> <span class="pre">title</span></code> as the <code class="docutils literal notranslate"><span class="pre">title</span></code> value, that row
will be deleted with our new row data replacing it.</p>
<p>Usage of the <code class="docutils literal notranslate"><span class="pre">set()</span></code> method is also allowed and all values are
automatically escaped, just like with <code class="docutils literal notranslate"><span class="pre">insert()</span></code>.</p>
</section>
<section id="builder-set">
<h4>$builder-&gt;set()<a class="headerlink" href="#builder-set" title="Permalink to this headline"></a></h4>
<p>This method enables you to set values for inserts or updates.</p>
<p><strong>It can be used instead of passing a data array directly to the insert()
or update() methods:</strong></p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">set</span><span class="p">(</span><span class="s1">&#39;name&#39;</span><span class="p">,</span> <span class="nv">$name</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">insert</span><span class="p">();</span>
<span class="c1">// Produces: INSERT INTO mytable (`name`) VALUES (&#39;{$name}&#39;)</span>
</pre></div>
</div>
<p>If you use multiple method called they will be assembled properly
based on whether you are doing an insert or an update:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">set</span><span class="p">(</span><span class="s1">&#39;name&#39;</span><span class="p">,</span> <span class="nv">$name</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">set</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="nv">$title</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">set</span><span class="p">(</span><span class="s1">&#39;status&#39;</span><span class="p">,</span> <span class="nv">$status</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">insert</span><span class="p">();</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">set()</span></code> will also accept an optional third parameter (<code class="docutils literal notranslate"><span class="pre">$escape</span></code>), that
will prevent the values from being escaped if set to <code class="docutils literal notranslate"><span class="pre">false</span></code>. To illustrate the
difference, here is <code class="docutils literal notranslate"><span class="pre">set()</span></code> used both with and without the escape
parameter.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">set</span><span class="p">(</span><span class="s1">&#39;field&#39;</span><span class="p">,</span> <span class="s1">&#39;field+1&#39;</span><span class="p">,</span> <span class="k">false</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">update</span><span class="p">();</span>
<span class="c1">// gives UPDATE mytable SET field = field+1 WHERE `id` = 2</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">set</span><span class="p">(</span><span class="s1">&#39;field&#39;</span><span class="p">,</span> <span class="s1">&#39;field+1&#39;</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">update</span><span class="p">();</span>
<span class="c1">// gives UPDATE `mytable` SET `field` = &#39;field+1&#39; WHERE `id` = 2</span>
</pre></div>
</div>
<p>You can also pass an associative array to this method:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$array</span> <span class="o">=</span> <span class="p">[</span>
<span class="s1">&#39;name&#39;</span> <span class="o">=&gt;</span> <span class="nv">$name</span><span class="p">,</span>
<span class="s1">&#39;title&#39;</span> <span class="o">=&gt;</span> <span class="nv">$title</span><span class="p">,</span>
<span class="s1">&#39;status&#39;</span> <span class="o">=&gt;</span> <span class="nv">$status</span><span class="p">,</span>
<span class="p">];</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">set</span><span class="p">(</span><span class="nv">$array</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">insert</span><span class="p">();</span>
</pre></div>
</div>
<p>Or an object:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">class</span> <span class="nc">Myclass</span>
<span class="p">{</span>
<span class="k">public</span> <span class="nv">$title</span> <span class="o">=</span> <span class="s1">&#39;My Title&#39;</span><span class="p">;</span>
<span class="k">public</span> <span class="nv">$content</span> <span class="o">=</span> <span class="s1">&#39;My Content&#39;</span><span class="p">;</span>
<span class="k">public</span> <span class="nv">$date</span> <span class="o">=</span> <span class="s1">&#39;My Date&#39;</span><span class="p">;</span>
<span class="p">}</span>
<span class="nv">$object</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Myclass</span><span class="p">();</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">set</span><span class="p">(</span><span class="nv">$object</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">insert</span><span class="p">();</span>
</pre></div>
</div>
</section>
<section id="builder-update">
<h4>$builder-&gt;update()<a class="headerlink" href="#builder-update" title="Permalink to this headline"></a></h4>
<p>Generates an update string and runs the query based on the data you
supply. You can pass an <strong>array</strong> or an <strong>object</strong> to the method. Here
is an example using an array:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$data</span> <span class="o">=</span> <span class="p">[</span>
<span class="s1">&#39;title&#39;</span> <span class="o">=&gt;</span> <span class="nv">$title</span><span class="p">,</span>
<span class="s1">&#39;name&#39;</span> <span class="o">=&gt;</span> <span class="nv">$name</span><span class="p">,</span>
<span class="s1">&#39;date&#39;</span> <span class="o">=&gt;</span> <span class="nv">$date</span><span class="p">,</span>
<span class="p">];</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="nv">$id</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">update</span><span class="p">(</span><span class="nv">$data</span><span class="p">);</span>
<span class="cm">/*</span>
<span class="cm"> * Produces:</span>
<span class="cm"> * UPDATE mytable</span>
<span class="cm"> * SET title = &#39;{$title}&#39;, name = &#39;{$name}&#39;, date = &#39;{$date}&#39;</span>
<span class="cm"> * WHERE id = $id</span>
<span class="cm"> */</span>
</pre></div>
</div>
<p>Or you can supply an object:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">class</span> <span class="nc">Myclass</span>
<span class="p">{</span>
<span class="k">public</span> <span class="nv">$title</span> <span class="o">=</span> <span class="s1">&#39;My Title&#39;</span><span class="p">;</span>
<span class="k">public</span> <span class="nv">$content</span> <span class="o">=</span> <span class="s1">&#39;My Content&#39;</span><span class="p">;</span>
<span class="k">public</span> <span class="nv">$date</span> <span class="o">=</span> <span class="s1">&#39;My Date&#39;</span><span class="p">;</span>
<span class="p">}</span>
<span class="nv">$object</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Myclass</span><span class="p">();</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="nv">$id</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">update</span><span class="p">(</span><span class="nv">$object</span><span class="p">);</span>
<span class="cm">/*</span>
<span class="cm"> * Produces:</span>
<span class="cm"> * UPDATE `mytable`</span>
<span class="cm"> * SET `title` = &#39;{$title}&#39;, `name` = &#39;{$name}&#39;, `date` = &#39;{$date}&#39;</span>
<span class="cm"> * WHERE id = `$id`</span>
<span class="cm"> */</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>All values are escaped automatically producing safer queries.</p>
</div>
<p>Youll notice the use of the <code class="docutils literal notranslate"><span class="pre">$builder-&gt;where()</span></code> method, enabling you
to set the <strong>WHERE</strong> clause. You can optionally pass this information
directly into the <code class="docutils literal notranslate"><span class="pre">update()</span></code> method as a string:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">update</span><span class="p">(</span><span class="nv">$data</span><span class="p">,</span> <span class="s1">&#39;id = 4&#39;</span><span class="p">);</span>
</pre></div>
</div>
<p>Or as an array:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">update</span><span class="p">(</span><span class="nv">$data</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;id&#39;</span> <span class="o">=&gt;</span> <span class="nv">$id</span><span class="p">]);</span>
</pre></div>
</div>
<p>You may also use the <code class="docutils literal notranslate"><span class="pre">$builder-&gt;set()</span></code> method described above when
performing updates.</p>
</section>
</section>
<section id="updatebatch">
<h3><a class="toc-backref" href="#id34">UpdateBatch</a><a class="headerlink" href="#updatebatch" title="Permalink to this headline"></a></h3>
<section id="builder-updatebatch">
<h4>$builder-&gt;updateBatch()<a class="headerlink" href="#builder-updatebatch" title="Permalink to this headline"></a></h4>
<p>Generates an update string based on the data you supply, and runs the query.
You can either pass an <strong>array</strong> or an <strong>object</strong> to the method.
Here is an example using an array:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$data</span> <span class="o">=</span> <span class="p">[</span>
<span class="p">[</span>
<span class="s1">&#39;title&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;My title&#39;</span><span class="p">,</span>
<span class="s1">&#39;name&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;My Name 2&#39;</span><span class="p">,</span>
<span class="s1">&#39;date&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;My date 2&#39;</span><span class="p">,</span>
<span class="p">],</span>
<span class="p">[</span>
<span class="s1">&#39;title&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;Another title&#39;</span><span class="p">,</span>
<span class="s1">&#39;name&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;Another Name 2&#39;</span><span class="p">,</span>
<span class="s1">&#39;date&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;Another date 2&#39;</span><span class="p">,</span>
<span class="p">],</span>
<span class="p">];</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">updateBatch</span><span class="p">(</span><span class="nv">$data</span><span class="p">,</span> <span class="s1">&#39;title&#39;</span><span class="p">);</span>
<span class="cm">/*</span>
<span class="cm"> * Produces:</span>
<span class="cm"> * UPDATE `mytable` SET `name` = CASE</span>
<span class="cm"> * WHEN `title` = &#39;My title&#39; THEN &#39;My Name 2&#39;</span>
<span class="cm"> * WHEN `title` = &#39;Another title&#39; THEN &#39;Another Name 2&#39;</span>
<span class="cm"> * ELSE `name` END,</span>
<span class="cm"> * `date` = CASE</span>
<span class="cm"> * WHEN `title` = &#39;My title&#39; THEN &#39;My date 2&#39;</span>
<span class="cm"> * WHEN `title` = &#39;Another title&#39; THEN &#39;Another date 2&#39;</span>
<span class="cm"> * ELSE `date` END</span>
<span class="cm"> * WHERE `title` IN (&#39;My title&#39;,&#39;Another title&#39;)</span>
<span class="cm"> */</span>
</pre></div>
</div>
<p>The first parameter is an associative array of values, the second parameter is the where key.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>All values are escaped automatically producing safer queries.</p>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p><code class="docutils literal notranslate"><span class="pre">affectedRows()</span></code> wont give you proper results with this method,
due to the very nature of how it works. Instead, <code class="docutils literal notranslate"><span class="pre">updateBatch()</span></code>
returns the number of rows affected.</p>
</div>
</section>
<section id="builder-getcompiledupdate">
<h4>$builder-&gt;getCompiledUpdate()<a class="headerlink" href="#builder-getcompiledupdate" title="Permalink to this headline"></a></h4>
<p>This works exactly the same way as <code class="docutils literal notranslate"><span class="pre">$builder-&gt;getCompiledInsert()</span></code> except
that it produces an <strong>UPDATE</strong> SQL string instead of an <strong>INSERT</strong> SQL string.</p>
<p>For more information view documentation for <code class="docutils literal notranslate"><span class="pre">$builder-&gt;getCompiledInsert()</span></code>.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This method doesnt work for batched updates.</p>
</div>
</section>
</section>
</section>
<section id="deleting-data">
<h2><a class="toc-backref" href="#id35">Deleting Data</a><a class="headerlink" href="#deleting-data" title="Permalink to this headline"></a></h2>
<section id="delete">
<h3><a class="toc-backref" href="#id36">Delete</a><a class="headerlink" href="#delete" title="Permalink to this headline"></a></h3>
<section id="builder-delete">
<h4>$builder-&gt;delete()<a class="headerlink" href="#builder-delete" title="Permalink to this headline"></a></h4>
<p>Generates a <strong>DELETE</strong> SQL string and runs the query.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">delete</span><span class="p">([</span><span class="s1">&#39;id&#39;</span> <span class="o">=&gt;</span> <span class="nv">$id</span><span class="p">]);</span>
<span class="c1">// Produces: DELETE FROM mytable WHERE id = $id</span>
</pre></div>
</div>
<p>The first parameter is the where clause.
You can also use the <code class="docutils literal notranslate"><span class="pre">where()</span></code> or <code class="docutils literal notranslate"><span class="pre">orWhere()</span></code> methods instead of passing
the data to the first parameter of the method:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="nv">$id</span><span class="p">);</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">delete</span><span class="p">();</span>
<span class="cm">/*</span>
<span class="cm"> * Produces:</span>
<span class="cm"> * DELETE FROM mytable</span>
<span class="cm"> * WHERE id = $id</span>
<span class="cm"> */</span>
</pre></div>
</div>
<p>If you want to delete all data from a table, you can use the <code class="docutils literal notranslate"><span class="pre">truncate()</span></code>
method, or <code class="docutils literal notranslate"><span class="pre">emptyTable()</span></code>.</p>
</section>
<section id="builder-emptytable">
<h4>$builder-&gt;emptyTable()<a class="headerlink" href="#builder-emptytable" title="Permalink to this headline"></a></h4>
<p>Generates a <strong>DELETE</strong> SQL string and runs the
query:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">emptyTable</span><span class="p">(</span><span class="s1">&#39;mytable&#39;</span><span class="p">);</span>
<span class="c1">// Produces: DELETE FROM mytable</span>
</pre></div>
</div>
</section>
<section id="builder-truncate">
<h4>$builder-&gt;truncate()<a class="headerlink" href="#builder-truncate" title="Permalink to this headline"></a></h4>
<p>Generates a <strong>TRUNCATE</strong> SQL string and runs the query.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">truncate</span><span class="p">();</span>
<span class="cm">/*</span>
<span class="cm"> * Produce:</span>
<span class="cm"> * TRUNCATE mytable</span>
<span class="cm"> */</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>If the TRUNCATE command isnt available, <code class="docutils literal notranslate"><span class="pre">truncate()</span></code> will
execute as “DELETE FROM table”.</p>
</div>
</section>
<section id="builder-getcompileddelete">
<h4>$builder-&gt;getCompiledDelete()<a class="headerlink" href="#builder-getcompileddelete" title="Permalink to this headline"></a></h4>
<p>This works exactly the same way as <code class="docutils literal notranslate"><span class="pre">$builder-&gt;getCompiledInsert()</span></code> except
that it produces a <strong>DELETE</strong> SQL string instead of an <strong>INSERT</strong> SQL string.</p>
<p>For more information view documentation for <code class="docutils literal notranslate"><span class="pre">$builder-&gt;getCompiledInsert()</span></code>.</p>
</section>
</section>
</section>
<section id="method-chaining">
<h2><a class="toc-backref" href="#id37">Method Chaining</a><a class="headerlink" href="#method-chaining" title="Permalink to this headline"></a></h2>
<p>Method chaining allows you to simplify your syntax by connecting
multiple methods. Consider this example:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$query</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">)</span>
<span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="nv">$id</span><span class="p">)</span>
<span class="o">-&gt;</span><span class="na">limit</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">20</span><span class="p">)</span>
<span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span>
</pre></div>
</div>
</section>
<section id="resetting-query-builder">
<span id="ar-caching"></span><h2><a class="toc-backref" href="#id38">Resetting Query Builder</a><a class="headerlink" href="#resetting-query-builder" title="Permalink to this headline"></a></h2>
<section id="resetquery">
<h3><a class="toc-backref" href="#id39">ResetQuery</a><a class="headerlink" href="#resetquery" title="Permalink to this headline"></a></h3>
<section id="builder-resetquery">
<h4>$builder-&gt;resetQuery()<a class="headerlink" href="#builder-resetquery" title="Permalink to this headline"></a></h4>
<p>Resetting Query Builder allows you to start fresh with your query without
executing it first using a method like <code class="docutils literal notranslate"><span class="pre">$builder-&gt;get()</span></code> or <code class="docutils literal notranslate"><span class="pre">$builder-&gt;insert()</span></code>.</p>
<p>This is useful in situations where you are using Query Builder to generate SQL
(e.g., <code class="docutils literal notranslate"><span class="pre">$builder-&gt;getCompiledSelect()</span></code>) but then choose to, for instance,
run the query:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="c1">// Note that the second parameter of the ``get_compiled_select`` method is false</span>
<span class="nv">$sql</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">select</span><span class="p">([</span><span class="s1">&#39;field1&#39;</span><span class="p">,</span> <span class="s1">&#39;field2&#39;</span><span class="p">])</span>
<span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;field3&#39;</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
<span class="o">-&gt;</span><span class="na">getCompiledSelect</span><span class="p">(</span><span class="k">false</span><span class="p">);</span>
<span class="c1">// ...</span>
<span class="c1">// Do something crazy with the SQL code... like add it to a cron script for</span>
<span class="c1">// later execution or something...</span>
<span class="c1">// ...</span>
<span class="nv">$data</span> <span class="o">=</span> <span class="nv">$builder</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">()</span><span class="o">-&gt;</span><span class="na">getResultArray</span><span class="p">();</span>
<span class="cm">/*</span>
<span class="cm"> * Would execute and return an array of results of the following query:</span>
<span class="cm"> * SELECT field1, field1 from mytable where field3 = 5;</span>
<span class="cm"> */</span>
</pre></div>
</div>
</section>
</section>
</section>
<section id="namespace-CodeIgniter\Database">
<span id="class-reference"></span><h2><a class="toc-backref" href="#id40">Class Reference</a><a class="headerlink" href="#namespace-CodeIgniter\Database" title="Permalink to this headline"></a></h2>
<dl class="php class">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder">
<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">CodeIgniter\Database\</span></span><span class="sig-name descname"><span class="pre">BaseBuilder</span></span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder" title="Permalink to this definition"></a></dt>
<dd><dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::db">
<span class="sig-name descname"><span class="pre">db</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::db" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>The database connection in use</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">ConnectionInterface</span></code></p>
</dd>
</dl>
<p>Returns the current database connection from <code class="docutils literal notranslate"><span class="pre">$db</span></code>. Useful for
accessing <code class="docutils literal notranslate"><span class="pre">ConnectionInterface</span></code> methods that are not directly
available to the Query Builder, like <code class="docutils literal notranslate"><span class="pre">insertID()</span></code> or <code class="docutils literal notranslate"><span class="pre">errors()</span></code>.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::resetQuery">
<span class="sig-name descname"><span class="pre">resetQuery</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::resetQuery" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Resets the current Query Builder state. Useful when you want
to build a query that can be cancelled under certain conditions.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::countAllResults">
<span class="sig-name descname"><span class="pre">countAllResults</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$reset</span> <span class="pre">=</span> <span class="pre">true</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::countAllResults" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$reset</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to reset values for SELECTs</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Number of rows in the query result</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><span><code class="xref php php-obj docutils literal notranslate"><span class="pre">int</span></code></span></p>
</dd>
</dl>
<p>Generates a platform-specific query string that counts
all records returned by an Query Builder query.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::countAll">
<span class="sig-name descname"><span class="pre">countAll</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$reset</span> <span class="pre">=</span> <span class="pre">true</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::countAll" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$reset</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to reset values for SELECTs</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Number of rows in the query result</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><span><code class="xref php php-obj docutils literal notranslate"><span class="pre">int</span></code></span></p>
</dd>
</dl>
<p>Generates a platform-specific query string that counts
all records in the particular table.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::get">
<span class="sig-name descname"><span class="pre">get</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">[$limit</span> <span class="pre">=</span> <span class="pre">null[,</span> <span class="pre">$offset</span> <span class="pre">=</span> <span class="pre">null[,</span> <span class="pre">$reset</span> <span class="pre">=</span> <span class="pre">true]]]]</span></em><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::get" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$limit</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">int</span></code></span>) The LIMIT clause</p></li>
<li><p><strong>$offset</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">int</span></code></span>) The OFFSET clause</p></li>
<li><p><strong>$reset</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Do we want to clear query builder values?</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">\CodeIgniter\Database\ResultInterface</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">\CodeIgniter\Database\ResultInterface</span></code></p>
</dd>
</dl>
<p>Compiles and runs <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement based on the already
called Query Builder methods.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::getWhere">
<span class="sig-name descname"><span class="pre">getWhere</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">[$where</span> <span class="pre">=</span> <span class="pre">null[,</span> <span class="pre">$limit</span> <span class="pre">=</span> <span class="pre">null[,</span> <span class="pre">$offset</span> <span class="pre">=</span> <span class="pre">null[,</span> <span class="pre">$reset</span> <span class="pre">=</span> <span class="pre">true]]]]]</span></em><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::getWhere" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$where</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) The WHERE clause</p></li>
<li><p><strong>$limit</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">int</span></code></span>) The LIMIT clause</p></li>
<li><p><strong>$offset</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">int</span></code></span>) The OFFSET clause</p></li>
<li><p><strong>$reset</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Do we want to clear query builder values?</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">\CodeIgniter\Database\ResultInterface</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">\CodeIgniter\Database\ResultInterface</span></code></p>
</dd>
</dl>
<p>Same as <code class="docutils literal notranslate"><span class="pre">get()</span></code>, but also allows the WHERE to be added directly.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::select">
<span class="sig-name descname"><span class="pre">select</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$select</span> <span class="pre">=</span> <span class="pre">'*'</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::select" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$select</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">array|RawSql|string</span></code></span>) The SELECT portion of a query</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values and identifiers</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds a <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> clause to a query.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::selectAvg">
<span class="sig-name descname"><span class="pre">selectAvg</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$select</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$alias</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::selectAvg" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$select</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Field to compute the average of</p></li>
<li><p><strong>$alias</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Alias for the resulting value name</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds a <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">AVG(field)</span></code> clause to a query.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::selectMax">
<span class="sig-name descname"><span class="pre">selectMax</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$select</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$alias</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::selectMax" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$select</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Field to compute the maximum of</p></li>
<li><p><strong>$alias</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Alias for the resulting value name</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds a <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">MAX(field)</span></code> clause to a query.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::selectMin">
<span class="sig-name descname"><span class="pre">selectMin</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$select</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$alias</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::selectMin" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$select</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Field to compute the minimum of</p></li>
<li><p><strong>$alias</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Alias for the resulting value name</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds a <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">MIN(field)</span></code> clause to a query.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::selectSum">
<span class="sig-name descname"><span class="pre">selectSum</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$select</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$alias</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::selectSum" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$select</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Field to compute the sum of</p></li>
<li><p><strong>$alias</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Alias for the resulting value name</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds a <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">SUM(field)</span></code> clause to a query.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::selectCount">
<span class="sig-name descname"><span class="pre">selectCount</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$select</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$alias</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::selectCount" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$select</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Field to compute the average of</p></li>
<li><p><strong>$alias</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Alias for the resulting value name</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds a <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">COUNT(field)</span></code> clause to a query.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::selectSubquery">
<span class="sig-name descname"><span class="pre">selectSubquery</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">BaseBuilder</span> <span class="pre">$subquery</span></em>, <em class="sig-param"><span class="pre">string</span> <span class="pre">$as</span></em><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::selectSubquery" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$subquery</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Instance of BaseBuilder</p></li>
<li><p><strong>$as</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Alias for the resulting value name</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds a subquery to the selection</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::distinct">
<span class="sig-name descname"><span class="pre">distinct</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$val</span> <span class="pre">=</span> <span class="pre">true</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::distinct" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$val</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Desired value of the “distinct” flag</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Sets a flag which tells the query builder to add
a <code class="docutils literal notranslate"><span class="pre">DISTINCT</span></code> clause to the <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> portion of the query.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::from">
<span class="sig-name descname"><span class="pre">from</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$from</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$overwrite</span> <span class="pre">=</span> <span class="pre">false</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::from" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$from</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">mixed</span></code></span>) Table name(s); string or array</p></li>
<li><p><strong>$overwrite</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Should we remove the first table existing?</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Specifies the <code class="docutils literal notranslate"><span class="pre">FROM</span></code> clause of a query.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::fromSubquery">
<span class="sig-name descname"><span class="pre">fromSubquery</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$from</span></em>, <em class="sig-param"><span class="pre">$alias</span></em><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::fromSubquery" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$from</strong> (<span><a class="reference internal" href="#CodeIgniter\Database\BaseBuilder" title="CodeIgniter\Database\BaseBuilder"><code class="xref php php-obj docutils literal notranslate"><span class="pre">BaseBuilder</span></code></a></span>) Instance of the BaseBuilder class</p></li>
<li><p><strong>$alias</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Subquery alias</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Specifies the <code class="docutils literal notranslate"><span class="pre">FROM</span></code> clause of a query using a subquery.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::join">
<span class="sig-name descname"><span class="pre">join</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$table</span></em>, <em class="sig-param"><span class="pre">$cond</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$type</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::join" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$table</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Table name to join</p></li>
<li><p><strong>$cond</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) The JOIN ON condition</p></li>
<li><p><strong>$type</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) The JOIN type</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values and identifiers</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds a <code class="docutils literal notranslate"><span class="pre">JOIN</span></code> clause to a query.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::where">
<span class="sig-name descname"><span class="pre">where</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$key</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$value</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::where" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$key</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">array|RawSql|string</span></code></span>) Name of field to compare, or associative array</p></li>
<li><p><strong>$value</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">mixed</span></code></span>) If a single key, compared to this value</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values and identifiers</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Generates the <code class="docutils literal notranslate"><span class="pre">WHERE</span></code> portion of the query. Separates multiple calls with <code class="docutils literal notranslate"><span class="pre">AND</span></code>.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::orWhere">
<span class="sig-name descname"><span class="pre">orWhere</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$key</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$value</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::orWhere" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$key</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">mixed</span></code></span>) Name of field to compare, or associative array</p></li>
<li><p><strong>$value</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">mixed</span></code></span>) If a single key, compared to this value</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values and identifiers</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Generates the <code class="docutils literal notranslate"><span class="pre">WHERE</span></code> portion of the query. Separates multiple calls with <code class="docutils literal notranslate"><span class="pre">OR</span></code>.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::orWhereIn">
<span class="sig-name descname"><span class="pre">orWhereIn</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$key</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$values</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::orWhereIn" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$key</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) The field to search</p></li>
<li><p><strong>$values</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">array|BaseBulder|Closure</span></code></span>) Array of target values, or anonymous function for subquery</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values and identifiers</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Generates a <code class="docutils literal notranslate"><span class="pre">WHERE</span></code> field <code class="docutils literal notranslate"><span class="pre">IN('item',</span> <span class="pre">'item')</span></code> SQL query, joined with <code class="docutils literal notranslate"><span class="pre">OR</span></code> if appropriate.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::orWhereNotIn">
<span class="sig-name descname"><span class="pre">orWhereNotIn</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$key</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$values</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::orWhereNotIn" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$key</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) The field to search</p></li>
<li><p><strong>$values</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">array|BaseBulder|Closure</span></code></span>) Array of target values, or anonymous function for subquery</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values and identifiers</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Generates a <code class="docutils literal notranslate"><span class="pre">WHERE</span></code> field <code class="docutils literal notranslate"><span class="pre">NOT</span> <span class="pre">IN('item',</span> <span class="pre">'item')</span></code> SQL query, joined with <code class="docutils literal notranslate"><span class="pre">OR</span></code> if appropriate.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::whereIn">
<span class="sig-name descname"><span class="pre">whereIn</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$key</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$values</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::whereIn" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$key</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Name of field to examine</p></li>
<li><p><strong>$values</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">array|BaseBulder|Closure</span></code></span>) Array of target values, or anonymous function for subquery</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values and identifiers</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Generates a <code class="docutils literal notranslate"><span class="pre">WHERE</span></code> field <code class="docutils literal notranslate"><span class="pre">IN('item',</span> <span class="pre">'item')</span></code> SQL query, joined with <code class="docutils literal notranslate"><span class="pre">AND</span></code> if appropriate.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::whereNotIn">
<span class="sig-name descname"><span class="pre">whereNotIn</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$key</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$values</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::whereNotIn" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$key</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Name of field to examine</p></li>
<li><p><strong>$values</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">array|BaseBulder|Closure</span></code></span>) Array of target values, or anonymous function for subquery</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values and identifiers</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Generates a <code class="docutils literal notranslate"><span class="pre">WHERE</span></code> field <code class="docutils literal notranslate"><span class="pre">NOT</span> <span class="pre">IN('item',</span> <span class="pre">'item')</span></code> SQL query, joined with <code class="docutils literal notranslate"><span class="pre">AND</span></code> if appropriate.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::groupStart">
<span class="sig-name descname"><span class="pre">groupStart</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::groupStart" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Starts a group expression, using <code class="docutils literal notranslate"><span class="pre">AND</span></code> for the conditions inside it.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::orGroupStart">
<span class="sig-name descname"><span class="pre">orGroupStart</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::orGroupStart" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Starts a group expression, using <code class="docutils literal notranslate"><span class="pre">OR</span></code> for the conditions inside it.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::notGroupStart">
<span class="sig-name descname"><span class="pre">notGroupStart</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::notGroupStart" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Starts a group expression, using <code class="docutils literal notranslate"><span class="pre">AND</span> <span class="pre">NOT</span></code> for the conditions inside it.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::orNotGroupStart">
<span class="sig-name descname"><span class="pre">orNotGroupStart</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::orNotGroupStart" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Starts a group expression, using <code class="docutils literal notranslate"><span class="pre">OR</span> <span class="pre">NOT</span></code> for the conditions inside it.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::groupEnd">
<span class="sig-name descname"><span class="pre">groupEnd</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::groupEnd" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Ends a group expression.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::like">
<span class="sig-name descname"><span class="pre">like</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$field</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$match</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$side</span> <span class="pre">=</span> <span class="pre">'both'</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$insensitiveSearch</span> <span class="pre">=</span> <span class="pre">false</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::like" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$field</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">array|RawSql|string</span></code></span>) Field name</p></li>
<li><p><strong>$match</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Text portion to match</p></li>
<li><p><strong>$side</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Which side of the expression to put the % wildcard on</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values and identifiers</p></li>
<li><p><strong>$insensitiveSearch</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to force a case-insensitive search</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds a <code class="docutils literal notranslate"><span class="pre">LIKE</span></code> clause to a query, separating multiple calls with <code class="docutils literal notranslate"><span class="pre">AND</span></code>.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::orLike">
<span class="sig-name descname"><span class="pre">orLike</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$field</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$match</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$side</span> <span class="pre">=</span> <span class="pre">'both'</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$insensitiveSearch</span> <span class="pre">=</span> <span class="pre">false</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::orLike" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$field</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Field name</p></li>
<li><p><strong>$match</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Text portion to match</p></li>
<li><p><strong>$side</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Which side of the expression to put the % wildcard on</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values and identifiers</p></li>
<li><p><strong>$insensitiveSearch</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to force a case-insensitive search</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds a <code class="docutils literal notranslate"><span class="pre">LIKE</span></code> clause to a query, separating multiple class with <code class="docutils literal notranslate"><span class="pre">OR</span></code>.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::notLike">
<span class="sig-name descname"><span class="pre">notLike</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$field</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$match</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$side</span> <span class="pre">=</span> <span class="pre">'both'</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$insensitiveSearch</span> <span class="pre">=</span> <span class="pre">false</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::notLike" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$field</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Field name</p></li>
<li><p><strong>$match</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Text portion to match</p></li>
<li><p><strong>$side</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Which side of the expression to put the % wildcard on</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values and identifiers</p></li>
<li><p><strong>$insensitiveSearch</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to force a case-insensitive search</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds a <code class="docutils literal notranslate"><span class="pre">NOT</span> <span class="pre">LIKE</span></code> clause to a query, separating multiple calls with <code class="docutils literal notranslate"><span class="pre">AND</span></code>.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::orNotLike">
<span class="sig-name descname"><span class="pre">orNotLike</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$field</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$match</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$side</span> <span class="pre">=</span> <span class="pre">'both'</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$insensitiveSearch</span> <span class="pre">=</span> <span class="pre">false</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::orNotLike" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$field</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Field name</p></li>
<li><p><strong>$match</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Text portion to match</p></li>
<li><p><strong>$side</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Which side of the expression to put the % wildcard on</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values and identifiers</p></li>
<li><p><strong>$insensitiveSearch</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to force a case-insensitive search</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds a <code class="docutils literal notranslate"><span class="pre">NOT</span> <span class="pre">LIKE</span></code> clause to a query, separating multiple calls with <code class="docutils literal notranslate"><span class="pre">OR</span></code>.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::having">
<span class="sig-name descname"><span class="pre">having</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$key</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$value</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::having" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$key</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">mixed</span></code></span>) Identifier (string) or associative array of field/value pairs</p></li>
<li><p><strong>$value</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Value sought if $key is an identifier</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Whether to escape values and identifiers</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds a <code class="docutils literal notranslate"><span class="pre">HAVING</span></code> clause to a query, separating multiple calls with <code class="docutils literal notranslate"><span class="pre">AND</span></code>.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::orHaving">
<span class="sig-name descname"><span class="pre">orHaving</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$key</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$value</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::orHaving" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$key</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">mixed</span></code></span>) Identifier (string) or associative array of field/value pairs</p></li>
<li><p><strong>$value</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Value sought if $key is an identifier</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Whether to escape values and identifiers</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds a <code class="docutils literal notranslate"><span class="pre">HAVING</span></code> clause to a query, separating multiple calls with <code class="docutils literal notranslate"><span class="pre">OR</span></code>.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::orHavingIn">
<span class="sig-name descname"><span class="pre">orHavingIn</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$key</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$values</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::orHavingIn" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$key</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) The field to search</p></li>
<li><p><strong>$values</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">array|BaseBulder|Closure</span></code></span>) Array of target values, or anonymous function for subquery</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values and identifiers</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Generates a <code class="docutils literal notranslate"><span class="pre">HAVING</span></code> field IN(item, item) SQL query, joined with <code class="docutils literal notranslate"><span class="pre">OR</span></code> if appropriate.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::orHavingNotIn">
<span class="sig-name descname"><span class="pre">orHavingNotIn</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$key</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$values</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::orHavingNotIn" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$key</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) The field to search</p></li>
<li><p><strong>$values</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">array|BaseBulder|Closure</span></code></span>) Array of target values, or anonymous function for subquery</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values and identifiers</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Generates a <code class="docutils literal notranslate"><span class="pre">HAVING</span></code> field <code class="docutils literal notranslate"><span class="pre">NOT</span> <span class="pre">IN('item',</span> <span class="pre">'item')</span></code> SQL query, joined with <code class="docutils literal notranslate"><span class="pre">OR</span></code> if appropriate.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::havingIn">
<span class="sig-name descname"><span class="pre">havingIn</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$key</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$values</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::havingIn" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$key</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Name of field to examine</p></li>
<li><p><strong>$values</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">array|BaseBulder|Closure</span></code></span>) Array of target values, or anonymous function for subquery</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values and identifiers</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Generates a <code class="docutils literal notranslate"><span class="pre">HAVING</span></code> field <code class="docutils literal notranslate"><span class="pre">IN('item',</span> <span class="pre">'item')</span></code> SQL query, joined with <code class="docutils literal notranslate"><span class="pre">AND</span></code> if appropriate.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::havingNotIn">
<span class="sig-name descname"><span class="pre">havingNotIn</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$key</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$values</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::havingNotIn" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$key</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Name of field to examine</p></li>
<li><p><strong>$values</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">array|BaseBulder|Closure</span></code></span>) Array of target values, or anonymous function for subquery</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values and identifiers</p></li>
<li><p><strong>$insensitiveSearch</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to force a case-insensitive search</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Generates a <code class="docutils literal notranslate"><span class="pre">HAVING</span></code> field <code class="docutils literal notranslate"><span class="pre">NOT</span> <span class="pre">IN('item',</span> <span class="pre">'item')</span></code> SQL query, joined with <code class="docutils literal notranslate"><span class="pre">AND</span></code> if appropriate.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::havingLike">
<span class="sig-name descname"><span class="pre">havingLike</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$field</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$match</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$side</span> <span class="pre">=</span> <span class="pre">'both'</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$insensitiveSearch</span> <span class="pre">=</span> <span class="pre">false</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::havingLike" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$field</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Field name</p></li>
<li><p><strong>$match</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Text portion to match</p></li>
<li><p><strong>$side</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Which side of the expression to put the % wildcard on</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values and identifiers</p></li>
<li><p><strong>$insensitiveSearch</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to force a case-insensitive search</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds a <code class="docutils literal notranslate"><span class="pre">LIKE</span></code> clause to a <code class="docutils literal notranslate"><span class="pre">HAVING</span></code> part of the query, separating multiple calls with <code class="docutils literal notranslate"><span class="pre">AND</span></code>.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::orHavingLike">
<span class="sig-name descname"><span class="pre">orHavingLike</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$field</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$match</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$side</span> <span class="pre">=</span> <span class="pre">'both'</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$insensitiveSearch</span> <span class="pre">=</span> <span class="pre">false</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::orHavingLike" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$field</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Field name</p></li>
<li><p><strong>$match</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Text portion to match</p></li>
<li><p><strong>$side</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Which side of the expression to put the % wildcard on</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values and identifiers</p></li>
<li><p><strong>$insensitiveSearch</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to force a case-insensitive search</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds a <code class="docutils literal notranslate"><span class="pre">LIKE</span></code> clause to a <code class="docutils literal notranslate"><span class="pre">HAVING</span></code> part of the query, separating multiple class with <code class="docutils literal notranslate"><span class="pre">OR</span></code>.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::notHavingLike">
<span class="sig-name descname"><span class="pre">notHavingLike</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$field</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$match</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$side</span> <span class="pre">=</span> <span class="pre">'both'</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$insensitiveSearch</span> <span class="pre">=</span> <span class="pre">false</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::notHavingLike" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$field</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Field name</p></li>
<li><p><strong>$match</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Text portion to match</p></li>
<li><p><strong>$side</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Which side of the expression to put the % wildcard on</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values and identifiers</p></li>
<li><p><strong>$insensitiveSearch</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to force a case-insensitive search</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds a <code class="docutils literal notranslate"><span class="pre">NOT</span> <span class="pre">LIKE</span></code> clause to a <code class="docutils literal notranslate"><span class="pre">HAVING</span></code> part of the query, separating multiple calls with <code class="docutils literal notranslate"><span class="pre">AND</span></code>.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::orNotHavingLike">
<span class="sig-name descname"><span class="pre">orNotHavingLike</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$field</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$match</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$side</span> <span class="pre">=</span> <span class="pre">'both'</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$insensitiveSearch</span> <span class="pre">=</span> <span class="pre">false</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::orNotHavingLike" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$field</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Field name</p></li>
<li><p><strong>$match</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Text portion to match</p></li>
<li><p><strong>$side</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Which side of the expression to put the % wildcard on</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values and identifiers</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds a <code class="docutils literal notranslate"><span class="pre">NOT</span> <span class="pre">LIKE</span></code> clause to a <code class="docutils literal notranslate"><span class="pre">HAVING</span></code> part of the query, separating multiple calls with <code class="docutils literal notranslate"><span class="pre">OR</span></code>.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::havingGroupStart">
<span class="sig-name descname"><span class="pre">havingGroupStart</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::havingGroupStart" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Starts a group expression for <code class="docutils literal notranslate"><span class="pre">HAVING</span></code> clause, using <code class="docutils literal notranslate"><span class="pre">AND</span></code> for the conditions inside it.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::orHavingGroupStart">
<span class="sig-name descname"><span class="pre">orHavingGroupStart</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::orHavingGroupStart" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Starts a group expression for <code class="docutils literal notranslate"><span class="pre">HAVING</span></code> clause, using <code class="docutils literal notranslate"><span class="pre">OR</span></code> for the conditions inside it.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::notHavingGroupStart">
<span class="sig-name descname"><span class="pre">notHavingGroupStart</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::notHavingGroupStart" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Starts a group expression for <code class="docutils literal notranslate"><span class="pre">HAVING</span></code> clause, using <code class="docutils literal notranslate"><span class="pre">AND</span> <span class="pre">NOT</span></code> for the conditions inside it.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::orNotHavingGroupStart">
<span class="sig-name descname"><span class="pre">orNotHavingGroupStart</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::orNotHavingGroupStart" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Starts a group expression for <code class="docutils literal notranslate"><span class="pre">HAVING</span></code> clause, using <code class="docutils literal notranslate"><span class="pre">OR</span> <span class="pre">NOT</span></code> for the conditions inside it.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::havingGroupEnd">
<span class="sig-name descname"><span class="pre">havingGroupEnd</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::havingGroupEnd" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Ends a group expression for <code class="docutils literal notranslate"><span class="pre">HAVING</span></code> clause.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::groupBy">
<span class="sig-name descname"><span class="pre">groupBy</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$by</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::groupBy" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$by</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">mixed</span></code></span>) Field(s) to group by; string or array</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds a <code class="docutils literal notranslate"><span class="pre">GROUP</span> <span class="pre">BY</span></code> clause to a query.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::orderBy">
<span class="sig-name descname"><span class="pre">orderBy</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$orderby</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$direction</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::orderBy" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$orderby</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Field to order by</p></li>
<li><p><strong>$direction</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) The order requested - ASC, DESC or random</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values and identifiers</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds an <code class="docutils literal notranslate"><span class="pre">ORDER</span> <span class="pre">BY</span></code> clause to a query.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::limit">
<span class="sig-name descname"><span class="pre">limit</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$value</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$offset</span> <span class="pre">=</span> <span class="pre">0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::limit" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$value</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">int</span></code></span>) Number of rows to limit the results to</p></li>
<li><p><strong>$offset</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">int</span></code></span>) Number of rows to skip</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds <code class="docutils literal notranslate"><span class="pre">LIMIT</span></code> and <code class="docutils literal notranslate"><span class="pre">OFFSET</span></code> clauses to a query.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::offset">
<span class="sig-name descname"><span class="pre">offset</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$offset</span></em><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::offset" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$offset</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">int</span></code></span>) Number of rows to skip</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds an <code class="docutils literal notranslate"><span class="pre">OFFSET</span></code> clause to a query.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::union">
<span class="sig-name descname"><span class="pre">union</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$union</span></em><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::union" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$union</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">BaseBulder|Closure</span></code></span>) Union query</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds a <code class="docutils literal notranslate"><span class="pre">UNION</span></code> clause.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::unionAll">
<span class="sig-name descname"><span class="pre">unionAll</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$union</span></em><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::unionAll" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$union</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">BaseBulder|Closure</span></code></span>) Union query</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds a <code class="docutils literal notranslate"><span class="pre">UNION</span> <span class="pre">ALL</span></code> clause.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::set">
<span class="sig-name descname"><span class="pre">set</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$key</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$value</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::set" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$key</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">mixed</span></code></span>) Field name, or an array of field/value pairs</p></li>
<li><p><strong>$value</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">mixed</span></code></span>) Field value, if $key is a single field</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds field/value pairs to be passed later to <code class="docutils literal notranslate"><span class="pre">insert()</span></code>, <code class="docutils literal notranslate"><span class="pre">update()</span></code> or <code class="docutils literal notranslate"><span class="pre">replace()</span></code>.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::insert">
<span class="sig-name descname"><span class="pre">insert</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$set</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::insert" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$set</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">array</span></code></span>) An associative array of field/value pairs</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">true</span></code> on success, <code class="docutils literal notranslate"><span class="pre">false</span></code> on failure</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span></p>
</dd>
</dl>
<p>Compiles and executes an <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> statement.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::insertBatch">
<span class="sig-name descname"><span class="pre">insertBatch</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$set</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$batch_size</span> <span class="pre">=</span> <span class="pre">100</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::insertBatch" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$set</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">array</span></code></span>) Data to insert</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values</p></li>
<li><p><strong>$batch_size</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">int</span></code></span>) Count of rows to insert at once</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Number of rows inserted or <code class="docutils literal notranslate"><span class="pre">false</span></code> on failure</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><span><code class="xref php php-obj docutils literal notranslate"><span class="pre">int|false</span></code></span></p>
</dd>
</dl>
<p>Compiles and executes batch <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> statements.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>When more than <code class="docutils literal notranslate"><span class="pre">$batch_size</span></code> rows are provided, multiple
<code class="docutils literal notranslate"><span class="pre">INSERT</span></code> queries will be executed, each trying to insert
up to <code class="docutils literal notranslate"><span class="pre">$batch_size</span></code> rows.</p>
</div>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::setInsertBatch">
<span class="sig-name descname"><span class="pre">setInsertBatch</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$key</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$value</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::setInsertBatch" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$key</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">mixed</span></code></span>) Field name or an array of field/value pairs</p></li>
<li><p><strong>$value</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Field value, if $key is a single field</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds field/value pairs to be inserted in a table later via <code class="docutils literal notranslate"><span class="pre">insertBatch()</span></code>.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::update">
<span class="sig-name descname"><span class="pre">update</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$set</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$where</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$limit</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::update" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$set</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">array</span></code></span>) An associative array of field/value pairs</p></li>
<li><p><strong>$where</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) The WHERE clause</p></li>
<li><p><strong>$limit</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">int</span></code></span>) The LIMIT clause</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">true</span></code> on success, <code class="docutils literal notranslate"><span class="pre">false</span></code> on failure</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span></p>
</dd>
</dl>
<p>Compiles and executes an <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> statement.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::updateBatch">
<span class="sig-name descname"><span class="pre">updateBatch</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$set</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$value</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$batch_size</span> <span class="pre">=</span> <span class="pre">100</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::updateBatch" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$set</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">array</span></code></span>) Field name, or an associative array of field/value pairs</p></li>
<li><p><strong>$value</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Field value, if $set is a single field</p></li>
<li><p><strong>$batch_size</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">int</span></code></span>) Count of conditions to group in a single query</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Number of rows updated or <code class="docutils literal notranslate"><span class="pre">false</span></code> on failure</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><span><code class="xref php php-obj docutils literal notranslate"><span class="pre">int|false</span></code></span></p>
</dd>
</dl>
<p>Compiles and executes batch <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> statements.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>When more than <code class="docutils literal notranslate"><span class="pre">$batch_size</span></code> field/value pairs are provided,
multiple queries will be executed, each handling up to
<code class="docutils literal notranslate"><span class="pre">$batch_size</span></code> field/value pairs.</p>
</div>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::setUpdateBatch">
<span class="sig-name descname"><span class="pre">setUpdateBatch</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$key</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$value</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$escape</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::setUpdateBatch" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$key</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">mixed</span></code></span>) Field name or an array of field/value pairs</p></li>
<li><p><strong>$value</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Field value, if $key is a single field</p></li>
<li><p><strong>$escape</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to escape values</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining)</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code></p>
</dd>
</dl>
<p>Adds field/value pairs to be updated in a table later via <code class="docutils literal notranslate"><span class="pre">updateBatch()</span></code>.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::replace">
<span class="sig-name descname"><span class="pre">replace</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$set</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::replace" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$set</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">array</span></code></span>) An associative array of field/value pairs</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">true</span></code> on success, <code class="docutils literal notranslate"><span class="pre">false</span></code> on failure</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span></p>
</dd>
</dl>
<p>Compiles and executes a <code class="docutils literal notranslate"><span class="pre">REPLACE</span></code> statement.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::delete">
<span class="sig-name descname"><span class="pre">delete</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$where</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$limit</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$reset_data</span> <span class="pre">=</span> <span class="pre">true</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::delete" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$where</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) The WHERE clause</p></li>
<li><p><strong>$limit</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">int</span></code></span>) The LIMIT clause</p></li>
<li><p><strong>$reset_data</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) true to reset the query “write” clause</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder</span></code> instance (method chaining) or <code class="docutils literal notranslate"><span class="pre">false</span></code> on failure</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">BaseBuilder|false</span></code></p>
</dd>
</dl>
<p>Compiles and executes a <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> query.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::increment">
<span class="sig-name descname"><span class="pre">increment</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$column</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$value</span> <span class="pre">=</span> <span class="pre">1</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::increment" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$column</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) The name of the column to increment</p></li>
<li><p><strong>$value</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">int</span></code></span>) The amount to increment in the column</p></li>
</ul>
</dd>
</dl>
<p>Increments the value of a field by the specified amount. If the field
is not a numeric field, like a <code class="docutils literal notranslate"><span class="pre">VARCHAR</span></code>, it will likely be replaced
with <code class="docutils literal notranslate"><span class="pre">$value</span></code>.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::decrement">
<span class="sig-name descname"><span class="pre">decrement</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$column</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">$value</span> <span class="pre">=</span> <span class="pre">1</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::decrement" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$column</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) The name of the column to decrement</p></li>
<li><p><strong>$value</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">int</span></code></span>) The amount to decrement in the column</p></li>
</ul>
</dd>
</dl>
<p>Decrements the value of a field by the specified amount. If the field
is not a numeric field, like a <code class="docutils literal notranslate"><span class="pre">VARCHAR</span></code>, it will likely be replaced
with <code class="docutils literal notranslate"><span class="pre">$value</span></code>.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::truncate">
<span class="sig-name descname"><span class="pre">truncate</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::truncate" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">true</span></code> on success, <code class="docutils literal notranslate"><span class="pre">false</span></code> on failure, string on test mode</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p><span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool|string</span></code></span></p>
</dd>
</dl>
<p>Executes a <code class="docutils literal notranslate"><span class="pre">TRUNCATE</span></code> statement on a table.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>If the database platform in use doesnt support <code class="docutils literal notranslate"><span class="pre">TRUNCATE</span></code>,
a <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> statement will be used instead.</p>
</div>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::emptyTable">
<span class="sig-name descname"><span class="pre">emptyTable</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::emptyTable" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">true</span></code> on success, <code class="docutils literal notranslate"><span class="pre">false</span></code> on failure</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p><span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span></p>
</dd>
</dl>
<p>Deletes all records from a table via a <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> statement.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::getCompiledSelect">
<span class="sig-name descname"><span class="pre">getCompiledSelect</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$reset</span> <span class="pre">=</span> <span class="pre">true</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::getCompiledSelect" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$reset</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to reset the current QB values or not</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>The compiled SQL statement as a string</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span></p>
</dd>
</dl>
<p>Compiles a <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement and returns it as a string.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::getCompiledInsert">
<span class="sig-name descname"><span class="pre">getCompiledInsert</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$reset</span> <span class="pre">=</span> <span class="pre">true</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::getCompiledInsert" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$reset</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to reset the current QB values or not</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>The compiled SQL statement as a string</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span></p>
</dd>
</dl>
<p>Compiles an <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> statement and returns it as a string.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::getCompiledUpdate">
<span class="sig-name descname"><span class="pre">getCompiledUpdate</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$reset</span> <span class="pre">=</span> <span class="pre">true</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::getCompiledUpdate" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$reset</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to reset the current QB values or not</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>The compiled SQL statement as a string</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span></p>
</dd>
</dl>
<p>Compiles an <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> statement and returns it as a string.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Database\BaseBuilder::getCompiledDelete">
<span class="sig-name descname"><span class="pre">getCompiledDelete</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$reset</span> <span class="pre">=</span> <span class="pre">true</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Database\BaseBuilder::getCompiledDelete" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$reset</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether to reset the current QB values or not</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>The compiled SQL statement as a string</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span></p>
</dd>
</dl>
<p>Compiles a <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> statement and returns it as a string.</p>
</dd></dl>
</dd></dl>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="helpers.html" class="btn btn-neutral float-left" title="Query Helper Methods" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="transactions.html" class="btn btn-neutral float-right" title="Transactions" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2019-2022 CodeIgniter Foundation.
<span class="lastupdated">Last updated on Dec 07, 2022.
</span></p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(false);
});
</script>
</body>
</html>