Spec-Zone.ru › CodeIgniter 4

Класс Query Builder

CodeIgniter предоставляет доступ к классу Query Builder. Этот шаблон позволяет извлекать, вставлять и обновлять информацию в вашей базе данных с минимальным количеством кода. В некоторых случаях для выполнения действия с базой данных достаточно одной или двух строк кода. CodeIgniter не требует, чтобы каждая таблица базы данных имела свой собственный класс. Вместо этого он предоставляет более упрощенный интерфейс.

Помимо простоты, основным преимуществом использования функций Query Builder является то, что он позволяет создавать независимые от базы данных приложения, так как синтаксис запроса генерируется каждым адаптером базы данных. Он также позволяет создавать более безопасные запросы, так как значения автоматически экранируются системой.

  • Загрузка Query Builder
  • Выбор данных
  • Поиск конкретных данных
  • Поиск похожих данных
  • Сортировка результатов
  • Ограничение или подсчёт результатов
  • Группировка запросов
  • Вставка данных
  • Обновление данных
  • Удаление данных
  • Цепочки методов
  • Сброс Query Builder
  • Справочник по классу

Загрузка Query Builder

Query Builder загружается с помощью метода table() на подключении к базе данных. Это задаёт часть запроса FROM и возвращает новый экземпляр класса Query Builder:

$db      = \Config\Database::connect();
$builder = $db->table('users');

Query Builder загружается в память только при явном запросе, поэтому ресурсы по умолчанию не используются.

Выбор данных

Следующие функции позволяют создавать SQL-запросы SELECT.

$builder->get()

Выполняет запрос выбора и возвращает результат. Может использоваться самостоятельно для извлечения всех записей из таблицы:

$builder = $db->table('mytable');
$query   = $builder->get();  // Produces: SELECT * FROM mytable

Первый и второй параметры позволяют установить условия LIMIT и OFFSET:

$query = $builder->get(10, 20);

// Executes: SELECT * FROM mytable LIMIT 20, 10
// (in MySQL. Other databases have slightly different syntax)

Вы заметите, что вышеупомянутая функция присвоена переменной $query, которая может быть использована для отображения результатов:

$query = $builder->get();

foreach ($query->getResult() as $row) {
    echo $row->title;
}

Пожалуйста, посетите страницу функций результатов для получения полной информации о генерации результатов.

$builder->getCompiledSelect()

Компилирует запрос выбора так же, как $builder->get() , но не выполняет запрос. Этот метод просто возвращает SQL-запрос в виде строки.

Пример:

$sql = $builder->getCompiledSelect();
echo $sql;

// Prints string: SELECT * FROM mytable

Первый параметр позволяет установить, будет ли сброшен запрос Query Builder (по умолчанию он сбрасывается, как и при использовании $builder->get()):

echo $builder->limit(10,20)->getCompiledSelect(false);

// Prints string: SELECT * FROM mytable LIMIT 20, 10
// (in MySQL. Other databases have slightly different syntax)

echo $builder->select('title, content, date')->getCompiledSelect();

// Prints string: SELECT title, content, date FROM mytable LIMIT 20, 10

Главное, что нужно заметить в приведенном выше примере, заключается в том, что второй запрос не использовал $builder->from() и не передавал имя таблицы в первый параметр. Причина такого результата заключается в том, что запрос не был выполнен с помощью $builder->get() , что сбрасывает значения, или сброшен непосредственно с помощью $builder->resetQuery() .

$builder->getWhere()

Идентично функции get() , за исключением того, что она позволяет добавить условие «where» в первый параметр вместо использования функции db->where():

$query = $builder->getWhere(['id' => $id], $limit, $offset);

Пожалуйста, ознакомьтесь с функцией where ниже для получения дополнительной информации.

$builder->select()

Позволяет записать часть SELECT вашего запроса:

$builder->select('title, content, date');
$query = $builder->get();

// Executes: SELECT title, content, date FROM mytable

Примечание

Если вы выбираете все (*) из таблицы, вам не нужно использовать эту функцию. При её отсутствии CodeIgniter предполагает, что вы хотите выбрать все поля и автоматически добавляет SELECT \*.

$builder->select() принимает необязательный второй параметр. Если вы установите его в false, CodeIgniter не будет пытаться защитить ваши имена полей или таблиц. Это полезно, если вам нужен составной запрос выбора, где автоматическое экранирование полей может нарушить его.

$builder->select('(SELECT SUM(payments.amount) FROM payments WHERE payments.invoice_id=4) AS amount_paid', false);
$query = $builder->get();

$builder->selectMax()

Записывает часть SELECT MAX(field) для вашего запроса. Вы можете необязательно включить второй параметр для переименования результирующего поля.

$builder->selectMax('age');
$query = $builder->get();
// Produces: SELECT MAX(age) as age FROM mytable

$builder->selectMax('age', 'member_age');
$query = $builder->get();
// Produces: SELECT MAX(age) as member_age FROM mytable

$builder->selectMin()

Записывает часть «SELECT MIN(field)» для вашего запроса. Как и selectMax(), вы можете необязательно включить второй параметр для переименования результирующего поля.

$builder->selectMin('age');
$query = $builder->get();
// Produces: SELECT MIN(age) as age FROM mytable

$builder->selectAvg()

Записывает часть «SELECT AVG(field)» для вашего запроса. Как и selectMax(), вы можете необязательно включить второй параметр для переименования результирующего поля.

$builder->selectAvg('age');
$query = $builder->get();
// Produces: SELECT AVG(age) as age FROM mytable

$builder->selectSum()

Записывает часть «SELECT SUM(field)» для вашего запроса. Как и selectMax(), вы можете необязательно включить второй параметр для переименования результирующего поля.

$builder->selectSum('age');
$query = $builder->get();
// Produces: SELECT SUM(age) as age FROM mytable

$builder->selectCount()

Записывает часть "SELECT COUNT(field)" для вашего запроса. Как и selectMax(), вы можете необязательно включить второй параметр для переименования результирующего поля.

Примечание

Этот метод особенно полезен при использовании с groupBy(). Для подсчета результатов обычно используется countAll() или countAllResults().

$builder->selectCount('age');
$query = $builder->get();
// Produces: SELECT COUNT(age) as age FROM mytable

$builder->from()

Позволяет записать часть FROM вашего запроса:

$builder = $db->table('users');
$builder->select('title, content, date');
$builder->from('mytable');
$query = $builder->get();
// Produces: SELECT title, content, date FROM users, mytable

Примечание

Как показано ранее, часть FROM вашего запроса указывается в функции $db->table(). Дополнительные вызовы к from() будут добавлять больше таблиц в часть FROM вашего запроса.

$builder->join()

Позволяет записать часть JOIN вашего запроса:

$builder = $db->table('blogs');
$builder->select('*');
$builder->join('comments', 'comments.id = blogs.id');
$query = $builder->get();

// Produces:
// SELECT * FROM blogs JOIN comments ON comments.id = blogs.id

Можно сделать несколько вызовов функции, если вам нужны несколько объединений в одном запросе.

Если вам нужен конкретный тип JOIN, вы можете указать его через третий параметр функции. Варианты: left, right, outer, inner, left outer и right outer.

$builder->join('comments', 'comments.id = blogs.id', 'left');
// Produces: LEFT JOIN comments ON comments.id = blogs.id

Поиск конкретных данных

$builder->where()

Эта функция позволяет установить условия WHERE с использованием одного из четырёх методов:

Примечание

Все значения, передаваемые в эту функцию, автоматически экранируются, что обеспечивает более безопасные запросы, за исключением случаев использования пользовательской строки.

Примечание

$builder->where() принимает необязательный третий параметр. Если вы установите его в false, CodeIgniter не будет пытаться защищать ваши имена полей или таблиц.

  1. Простой метод ключ/значение:

    $builder->where('name', $name);
    // Produces: WHERE name = 'Joe'
    

    Обратите внимание, что знак равенства добавляется автоматически.

    Если вы используете несколько вызовов функций, они будут объединены с AND между ними:

    $builder->where('name', $name);
    $builder->where('title', $title);
    $builder->where('status', $status);
    // WHERE name = 'Joe' AND title = 'boss' AND status = 'active'
    
  2. Метод пользовательского ключа/значения:

    Вы можете включить оператор в первый параметр, чтобы управлять сравнением:

    $builder->where('name !=', $name);
    $builder->where('id <', $id);
    // Produces: WHERE name != 'Joe' AND id < 45
    
  3. Метод ассоциативного массива:

    $array = ['name' => $name, 'title' => $title, 'status' => $status];
    $builder->where($array);
    // Produces: WHERE name = 'Joe' AND title = 'boss' AND status = 'active'
    

    Вы также можете включить собственные операторы с помощью этого метода:

    $array = ['name !=' => $name, 'id <' => $id, 'date >' => $date];
    $builder->where($array);
    
  4. Пользовательская строка:

    Вы можете вручную записать свои собственные условия:

    $where = "name='Joe' AND status='boss' OR status='active'";
    $builder->where($where);
    

    Если вы используете данные, предоставленные пользователем, в строке, вы ОБЯЗАТЕЛЬНО должны вручную экранировать данные. Отсутствие экранирования может привести к SQL-инъекциям.

    $name = $builder->db->escape('Joe');
    $where = "name={$name} AND status='boss' OR status='active'";
    $builder->where($where);
    
  5. Подзапросы:

    Вы можете использовать анонимную функцию для создания подзапроса:

    $builder->where('advance_amount <', function (BaseBuilder $builder) {
        return $builder->select('MAX(advance_amount)', false)->from('orders')->where('id >', 2);
    });
    // Produces: WHERE "advance_amount" < (SELECT MAX(advance_amount) FROM "orders" WHERE "id" > 2)
    

$builder->orWhere()

Эта функция идентична вышеупомянутой, за исключением того, что несколько экземпляров соединяются с помощью OR:

$builder->where('name !=', $name);
$builder->orWhere('id >', $id);
// Produces: WHERE name != 'Joe' OR id > 50

$builder->whereIn()

Генерирует SQL-запрос WHERE field IN (‘item’, ‘item’), объединённый с AND при необходимости:

$names = ['Frank', 'Todd', 'James'];
$builder->whereIn('username', $names);
// Produces: WHERE username IN ('Frank', 'Todd', 'James')

Вы можете использовать подзапросы вместо массива значений:

$builder->whereIn('id', function (BaseBuilder $builder) {
    return $builder->select('job_id')->from('users_jobs')->where('user_id', 3);
});
// Produces: WHERE "id" IN (SELECT "job_id" FROM "users_jobs" WHERE "user_id" = 3)

$builder->orWhereIn()

Генерирует SQL-запрос WHERE field IN ('item', 'item'), объединённый с OR при необходимости:

$names = ['Frank', 'Todd', 'James'];
$builder->orWhereIn('username', $names);
// Produces: OR username IN ('Frank', 'Todd', 'James')

Вы можете использовать подзапросы вместо массива значений:

$builder->orWhereIn('id', function (BaseBuilder $builder) {
    return $builder->select('job_id')->from('users_jobs')->where('user_id', 3);
});

// Produces: OR "id" IN (SELECT "job_id" FROM "users_jobs" WHERE "user_id" = 3)

$builder->whereNotIn()

Генерирует SQL-запрос WHERE field NOT IN (‘item’, ‘item’), объединённый с AND при необходимости:

$names = ['Frank', 'Todd', 'James'];
$builder->whereNotIn('username', $names);
// Produces: WHERE username NOT IN ('Frank', 'Todd', 'James')

Вы можете использовать подзапросы вместо массива значений:

$builder->whereNotIn('id', function (BaseBuilder $builder) {
    return $builder->select('job_id')->from('users_jobs')->where('user_id', 3);
});

// Produces: WHERE "id" NOT IN (SELECT "job_id" FROM "users_jobs" WHERE "user_id" = 3)

$builder->orWhereNotIn()

Генерирует SQL-запрос WHERE field NOT IN ('item', 'item'), объединённый с OR при необходимости:

$names = ['Frank', 'Todd', 'James'];
$builder->orWhereNotIn('username', $names);
// Produces: OR username NOT IN ('Frank', 'Todd', 'James')

Вы можете использовать подзапросы вместо массива значений:

$builder->orWhereNotIn('id', function (BaseBuilder $builder) {
    return $builder->select('job_id')->from('users_jobs')->where('user_id', 3);
});

// Produces: OR "id" NOT IN (SELECT "job_id" FROM "users_jobs" WHERE "user_id" = 3)

Поиск похожих данных

$builder->like()

Этот метод позволяет генерировать условия LIKE, полезные для поиска.

Примечание

Все значения, передаваемые в этот метод, автоматически экранируются.

Примечание

Все вариации метода like* могут быть принудительно переведены в регистронезависимый поиск путём передачи пятого параметра true в метод. В этом случае будут использоваться платформоспецифичные возможности, если они доступны; иначе значения будут принудительно переведены в нижний регистр, т.е., WHERE LOWER(column) LIKE '%search%'. Это может потребовать создания индексов для LOWER(column) вместо column для эффективной работы.

  1. Простой метод ключ/значение:

    $builder->like('title', 'match');
    // Produces: WHERE `title` LIKE '%match%' ESCAPE '!'
    

    Если вы используете несколько вызовов методов, они будут объединены с помощью AND:

    $builder->like('title', 'match');
    $builder->like('body', 'match');
    // WHERE `title` LIKE '%match%' ESCAPE '!' AND  `body` LIKE '%match%' ESCAPE '!'
    

    Если вы хотите контролировать расположение символа подстановки (%) , вы можете использовать необязательный третий аргумент. Ваши варианты: ‘before’, ‘after’ и ‘both’ (по умолчанию).

    $builder->like('title', 'match', 'before'); // Produces: WHERE `title` LIKE '%match' ESCAPE '!'
    $builder->like('title', 'match', 'after');  // Produces: WHERE `title` LIKE 'match%' ESCAPE '!'
    $builder->like('title', 'match', 'both');   // Produces: WHERE `title` LIKE '%match%' ESCAPE '!'
    
  2. Метод ассоциативного массива:

    $array = ['title' => $match, 'page1' => $match, 'page2' => $match];
    $builder->like($array);
    // WHERE `title` LIKE '%match%' ESCAPE '!' AND  `page1` LIKE '%match%' ESCAPE '!' AND  `page2` LIKE '%match%' ESCAPE '!'
    

$builder->orLike()

Этот метод идентичен предыдущему, за исключением того, что несколько экземпляров объединяются оператором ИЛИ:

$builder->like('title', 'match'); $builder->orLike('body', $match);
// WHERE `title` LIKE '%match%' ESCAPE '!' OR  `body` LIKE '%match%' ESCAPE '!'

$builder->notLike()

Этот метод идентичен like(), за исключением того, что он генерирует операторы NOT LIKE:

$builder->notLike('title', 'match'); // WHERE `title` NOT LIKE '%match% ESCAPE '!'

$builder->orNotLike()

Этот метод идентичен notLike(), за исключением того, что несколько экземпляров объединяются оператором ИЛИ:

$builder->like('title', 'match');
$builder->orNotLike('body', 'match');
// WHERE `title` LIKE '%match% OR  `body` NOT LIKE '%match%' ESCAPE '!'

$builder->groupBy()

Позволяет вам написать часть GROUP BY вашего запроса:

$builder->groupBy("title");
// Produces: GROUP BY title

Вы также можете передать массив из нескольких значений:

$builder->groupBy(["title", "date"]);
// Produces: GROUP BY title, date

$builder->distinct()

Добавляет ключевое слово «DISTINCT» в запрос

$builder->distinct();
$builder->get();
// Produces: SELECT DISTINCT * FROM mytable

$builder->having()

Позволяет вам написать часть HAVING вашего запроса. Есть 2 возможных синтаксиса: 1 аргумент или 2:

$builder->having('user_id = 45'); // Produces: HAVING user_id = 45
$builder->having('user_id',  45); // Produces: HAVING user_id = 45

Вы также можете передать массив из нескольких значений:

$builder->having(['title =' => 'My Title', 'id <' => $id]);
// Produces: HAVING title = 'My Title', id < 45

Если вы используете базу данных, для которой CodeIgniter экранирует запросы, вы можете предотвратить экранирование содержимого, передав необязательный третий аргумент и установив его в значение false.

$builder->having('user_id',  45); // Produces: HAVING `user_id` = 45 in some databases such as MySQL
$builder->having('user_id',  45, false); // Produces: HAVING user_id = 45

$builder->orHaving()

Идентично having(), только отделяет несколько подзапросов с помощью «ИЛИ».

$builder->havingIn()

Генерирует запрос SQL HAVING field IN ('item', 'item'), объединенный с AND, если это уместно.

$groups = [1, 2, 3];
$builder->havingIn('group_id', $groups);
// Produces: HAVING group_id IN (1, 2, 3)

Вы можете использовать подзапросы вместо массива значений.

$builder->havingIn('id', function (BaseBuilder $builder) {
    return $builder->select('user_id')->from('users_jobs')->where('group_id', 3);
});
// Produces: HAVING "id" IN (SELECT "user_id" FROM "users_jobs" WHERE "group_id" = 3)

$builder->orHavingIn()

Генерирует запрос SQL HAVING field IN ('item', 'item'), объединенный с OR, если это уместно.

$groups = [1, 2, 3];
$builder->orHavingIn('group_id', $groups);
// Produces: OR group_id IN (1, 2, 3)

Вы можете использовать подзапросы вместо массива значений.

$builder->orHavingIn('id', function (BaseBuilder $builder) {
    return $builder->select('user_id')->from('users_jobs')->where('group_id', 3);
});

// Produces: OR "id" IN (SELECT "user_id" FROM "users_jobs" WHERE "group_id" = 3)

$builder->havingNotIn()

Генерирует запрос SQL HAVING field NOT IN ('item', 'item'), объединенный с AND, если это уместно.

$groups = [1, 2, 3];
$builder->havingNotIn('group_id', $groups);
// Produces: HAVING group_id NOT IN (1, 2, 3)

Вы можете использовать подзапросы вместо массива значений.

$builder->havingNotIn('id', function (BaseBuilder $builder) {
    return $builder->select('user_id')->from('users_jobs')->where('group_id', 3);
});

// Produces: HAVING "id" NOT IN (SELECT "user_id" FROM "users_jobs" WHERE "group_id" = 3)

$builder->orHavingNotIn()

Генерирует запрос SQL HAVING field NOT IN ('item', 'item'), объединенный с OR, если это уместно.

$groups = [1, 2, 3];
$builder->havingNotIn('group_id', $groups);
// Produces: OR group_id NOT IN (1, 2, 3)

Вы можете использовать подзапросы вместо массива значений.

$builder->orHavingNotIn('id', function (BaseBuilder $builder) {
    return $builder->select('user_id')->from('users_jobs')->where('group_id', 3);
});

// Produces: OR "id" NOT IN (SELECT "user_id" FROM "users_jobs" WHERE "group_id" = 3)

$builder->havingLike()

Этот метод позволяет генерировать условия LIKE для части HAVING запроса, что полезно для поиска.

Примечание

Все значения, переданные этому методу, автоматически экранируются.

Примечание

Все havingLike* варианты метода могут быть принудительно выполнены с учетом регистра, передав пятый параметр true в метод. Это будет использовать платформенно-специфичные функции, где это возможно; в противном случае значения будут принудительно приведены к нижнему регистру, т. е. HAVING LOWER(column) LIKE '%search%'. Это может потребовать создания индексов для LOWER(column) вместо column, чтобы быть эффективным.

  1. Простой метод key/value:

    $builder->havingLike('title', 'match');
    // Produces: HAVING `title` LIKE '%match%' ESCAPE '!'
    

    Если вы используете несколько вызовов метода, они будут объединены вместе с AND между ними:

    $builder->havingLike('title', 'match');
    $builder->havingLike('body', 'match');
    // HAVING `title` LIKE '%match%' ESCAPE '!' AND  `body` LIKE '%match% ESCAPE '!'
    

    Если вы хотите контролировать, где размещен символ подстановки (%) , вы можете использовать необязательный третий аргумент. Варианты — ‘before’, ‘after’ и ‘both’ (по умолчанию).

    $builder->havingLike('title', 'match', 'before'); // Produces: HAVING `title` LIKE '%match' ESCAPE '!'
    $builder->havingLike('title', 'match', 'after');  // Produces: HAVING `title` LIKE 'match%' ESCAPE '!'
    $builder->havingLike('title', 'match', 'both');   // Produces: HAVING `title` LIKE '%match%' ESCAPE '!'
    
  2. Метод с ассоциативным массивом:

    $array = ['title' => $match, 'page1' => $match, 'page2' => $match];
    $builder->havingLike($array);
    // HAVING `title` LIKE '%match%' ESCAPE '!' AND  `page1` LIKE '%match%' ESCAPE '!' AND  `page2` LIKE '%match%' ESCAPE '!'
    

$builder->orHavingLike()

Этот метод идентичен предыдущему, за исключением того, что несколько экземпляров объединяются оператором ИЛИ:

$builder->havingLike('title', 'match'); $builder->orHavingLike('body', $match);
// HAVING `title` LIKE '%match%' ESCAPE '!' OR  `body` LIKE '%match%' ESCAPE '!'

$builder->notHavingLike()

Этот метод идентичен havingLike(), за исключением того, что он генерирует операторы NOT LIKE:

$builder->notHavingLike('title', 'match');
// HAVING `title` NOT LIKE '%match% ESCAPE '!'

$builder->orNotHavingLike()

Этот метод идентичен notHavingLike(), за исключением того, что несколько экземпляров объединяются оператором ИЛИ:

$builder->havingLike('title', 'match');
$builder->orNotHavingLike('body', 'match');
// HAVING `title` LIKE '%match% OR  `body` NOT LIKE '%match%' ESCAPE '!'

Сортировка результатов

$builder->orderBy()

Позволяет установить условие ORDER BY.

Первый параметр содержит имя столбца, по которому вы хотите отсортировать результаты.

Второй параметр позволяет установить направление результата. Доступные варианты — ASC, DESC и RANDOM.

$builder->orderBy('title', 'DESC');
// Produces: ORDER BY `title` DESC

Вы также можете передать свою собственную строку в первом параметре:

$builder->orderBy('title DESC, name ASC');
// Produces: ORDER BY `title` DESC, `name` ASC

Или вы можете сделать несколько вызовов функций, если вам нужно несколько полей.

$builder->orderBy('title', 'DESC');
$builder->orderBy('name', 'ASC');
// Produces: ORDER BY `title` DESC, `name` ASC

Если вы выберите опцию направления RANDOM, то первые параметры будут проигнорированы, если вы не укажете численное значение семени.

$builder->orderBy('title', 'RANDOM');
// Produces: ORDER BY RAND()

$builder->orderBy(42, 'RANDOM');
// Produces: ORDER BY RAND(42)

Примечание

Случайная сортировка в настоящее время не поддерживается в Oracle и по умолчанию будет установлена ​​в ASC.

Ограничение или подсчет результатов

$builder->limit()

Позволяет ограничить количество строк, которые должны быть возвращены запросом:

$builder->limit(10);
// Produces: LIMIT 10

Второй параметр позволяет установить смещение результата.

$builder->limit(10, 20);
// Produces: LIMIT 20, 10 (in MySQL. Other databases have slightly different syntax)

$builder->countAllResults()

Позволяет определить количество строк в конкретном запросе Query Builder. Запросы будут принимать ограничения Query Builder, такие как where(), orWhere(), like(), orLike(), и т. д. Пример:

echo $builder->countAllResults(); // Produces an integer, like 25
$builder->like('title', 'match');
$builder->from('my_table');
echo $builder->countAllResults(); // Produces an integer, like 17

Однако этот метод также сбрасывает любые значения полей, которые вы могли передать в select(). Если вам нужно сохранить их, вы можете передать false в качестве первого параметра.

echo $builder->countAllResults(false); // Produces an integer, like 17

$builder->countAll()

Позволяет определить количество строк в определенной таблице. Пример:

echo $builder->countAll(); // Produces an integer, like 25

Как и в методе countAllResults, этот метод сбрасывает любые значения полей, которые вы могли передать в select(). Если вам нужно сохранить их, вы можете передать false в качестве первого параметра.

Группировка запросов

Группировка запросов позволяет создавать группы условий WHERE, заключая их в скобки. Это позволит вам создавать запросы со сложными условиями WHERE. Поддерживаются вложенные группы. Пример:

$builder->select('*')->from('my_table')
    ->groupStart()
        ->where('a', 'a')
        ->orGroupStart()
            ->where('b', 'b')
            ->where('c', 'c')
        ->groupEnd()
    ->groupEnd()
    ->where('d', 'd')
->get();

// Generates:
// SELECT * FROM (`my_table`) WHERE ( `a` = 'a' OR ( `b` = 'b' AND `c` = 'c' ) ) AND `d` = 'd'

Примечание

Группы должны быть сбалансированы. Убедитесь, что каждый groupStart() сопоставлен с groupEnd().

$builder->groupStart()

Начинает новую группу, добавляя открывающую скобку к условию WHERE запроса.

$builder->orGroupStart()

Начинает новую группу, добавляя открывающую скобку к условию WHERE запроса, предваряя ее «ИЛИ».

$builder->notGroupStart()

Начинает новую группу, добавляя открывающую скобку к условию WHERE запроса, предваряя ее «НЕ».

$builder->orNotGroupStart()

Начинает новую группу, добавляя открывающую скобку к условию WHERE запроса, предваряя ее «ИЛИ НЕ».

$builder->groupEnd()

Заканчивает текущую группу, добавляя закрывающую скобку к условию WHERE запроса.

$builder->havingGroupStart()

Начинает новую группу, добавляя открывающую скобку к условию HAVING запроса.

$builder->orHavingGroupStart()

Начинает новую группу, добавляя открывающую скобку к условию HAVING запроса, предваряя ее «ИЛИ».

$builder->notHavingGroupStart()

Начинает новую группу, добавляя открывающую скобку к условию HAVING запроса, предваряя ее «НЕ».

$builder->orNotHavingGroupStart()

Начинает новую группу, добавляя открывающую скобку к условию HAVING запроса, предваряя ее «ИЛИ НЕ».

$builder->havingGroupEnd()

Заканчивает текущую группу, добавляя закрывающую скобку к условию HAVING запроса.

Вставка данных

$builder->insert()

Генерирует строку вставки на основе предоставленных данных и выполняет запрос. Вы можете передать либо массив, либо объект в функцию. Вот пример с использованием массива:

$data = [
    'title' => 'My title',
    'name'  => 'My Name',
    'date'  => 'My date',
];

$builder->insert($data);
// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date')

Первый параметр — ассоциативный массив значений.

Вот пример с использованием объекта:

class Myclass
{
    public $title   = 'My Title';
    public $content = 'My Content';
    public $date    = 'My Date';
}

$object = new Myclass;
$builder->insert($object);
// Produces: INSERT INTO mytable (title, content, date) VALUES ('My Title', 'My Content', 'My Date')

Первый параметр — объект.

Примечание

Все значения автоматически экранируются, что делает запросы безопаснее.

$builder->ignore()

Генерирует строку вставки игнорирования на основе предоставленных данных и выполняет запрос. Если запись с таким же первичным ключом уже существует, запрос не будет вставлен. Вы можете необязательно передать булево значение в функцию. Вот пример с использованием массива из приведенного выше примера:

$data = [
    'title' => 'My title',
    'name'  => 'My Name',
    'date'  => 'My date',
];

$builder->ignore(true)->insert($data);
// Produces: INSERT OR IGNORE INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date')

$builder->getCompiledInsert()

Компилирует запрос на вставку так же, как $builder->insert(), но не выполняет запрос. Этот метод просто возвращает запрос SQL в виде строки.

Пример:

$data = [
    'title' => 'My title',
    'name'  => 'My Name',
    'date'  => 'My date',
];

$sql = $builder->set($data)->getCompiledInsert('mytable');
echo $sql;

// Produces string: INSERT INTO mytable (`title`, `name`, `date`) VALUES ('My title', 'My name', 'My date')

Второй параметр позволяет указать, будет ли сброшен запрос Query Builder (по умолчанию — будет, как и в случае с $builder->insert()):

echo $builder->set('title', 'My Title')->getCompiledInsert('mytable', false);

// Produces string: INSERT INTO mytable (`title`) VALUES ('My Title')

echo $builder->set('content', 'My Content')->getCompiledInsert();

// Produces string: INSERT INTO mytable (`title`, `content`) VALUES ('My Title', 'My Content')

Ключевой момент в приведенном выше примере заключается в том, что второй запрос не использовал $builder->from(), а также не передавал имя таблицы в первый параметр. Причина, по которой это сработало, заключается в том, что запрос не был выполнен с использованием $builder->insert(), что сбрасывает значения, или сброшен напрямую с помощью $builder->resetQuery().

Примечание

Этот метод не работает для пакетных вставок.

$builder->insertBatch()

Генерирует строку вставки на основе предоставленных данных и выполняет запрос. Вы можете передать либо массив, либо объект в функцию. Вот пример с использованием массива:

$data = [
    [
        'title' => 'My title',
        'name'  => 'My Name',
        'date'  => 'My date',
    ],
    [
        'title' => 'Another title',
        'name'  => 'Another Name',
        'date'  => 'Another date',
    ],
];

$builder->insertBatch($data);
// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'),  ('Another title', 'Another name', 'Another date')

Первый параметр — ассоциативный массив значений.

Примечание

Все значения автоматически экранируются, что делает запросы безопаснее.

Обновление данных

$builder->replace()

Этот метод выполняет оператор REPLACE, который по сути является стандартным оператором SQL для (необязательного) DELETE + INSERT, используя первичные и уникальные ключи в качестве определяющего фактора. В нашем случае это избавит вас от необходимости реализовывать сложную логику с различными комбинациями select(), update(), delete() и insert() вызовов.

Пример:

$data = [
    'title' => 'My title',
    'name'  => 'My Name',
    'date'  => 'My date',
];

$builder->replace($data);

// Executes: REPLACE INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date')

В приведенном выше примере, если мы предположим, что поле title является нашим первичным ключом, то если строка, содержащая «Мой заголовок» в качестве значения title, эта строка будет удалена, а наши новые данные строки заменят её.

Использование метода set() также разрешено, и все поля автоматически экранируются, как и при использовании insert().

$builder->set()

Эта функция позволяет задавать значения для вставок или обновлений.

Её можно использовать вместо непосредственного передачи массива данных функциям insert или update:

$builder->set('name', $name);
$builder->insert();
// Produces: INSERT INTO mytable (`name`) VALUES ('{$name}')

Если вы вызываете несколько функций, они будут правильно объединены в зависимости от того, выполняется ли вставка или обновление:

$builder->set('name', $name);
$builder->set('title', $title);
$builder->set('status', $status);
$builder->insert();

set() также принимает необязательный третий параметр ($escape), который предотвратит экранирование данных, если задано значение false. Чтобы проиллюстрировать разницу, вот пример использования set() с параметром экранирования и без него.

$builder->set('field', 'field+1', false);
$builder->where('id', 2);
$builder->update();
// gives UPDATE mytable SET field = field+1 WHERE `id` = 2

$builder->set('field', 'field+1');
$builder->where('id', 2);
$builder->update();
// gives UPDATE `mytable` SET `field` = 'field+1' WHERE `id` = 2

Вы также можете передать ассоциативный массив в эту функцию:

$array = [
    'name'   => $name,
    'title'  => $title,
    'status' => $status,
];

$builder->set($array);
$builder->insert();

Или объект:

class Myclass
{
    public $title   = 'My Title';
    public $content = 'My Content';
    public $date    = 'My Date';
}

$object = new Myclass;
$builder->set($object);
$builder->insert();

$builder->update()

Генерирует строку обновления и выполняет запрос на основе предоставленных данных. Вы можете передать в функцию массив или объект. Вот пример с использованием массива:

$data = [
    'title' => $title,
    'name'  => $name,
    'date'  => $date,
];

$builder->where('id', $id);
$builder->update($data);
// Produces:
//
// UPDATE mytable
// SET title = '{$title}', name = '{$name}', date = '{$date}'
// WHERE id = $id

Или вы можете передать объект:

class Myclass
{
    public $title   = 'My Title';
    public $content = 'My Content';
    public $date    = 'My Date';
}

$object = new Myclass;
$builder->where('id', $id);
$builder->update($object);
// Produces:
//
// UPDATE `mytable`
// SET `title` = '{$title}', `name` = '{$name}', `date` = '{$date}'
// WHERE id = `$id`

Примечание

Все значения автоматически экранируются, обеспечивая более безопасные запросы.

Вы заметите использование функции $builder->where(), которая позволяет задать условие WHERE. Вы можете необязательно передать эту информацию непосредственно в функцию update в виде строки:

$builder->update($data, "id = 4");

Или в виде массива:

$builder->update($data, ['id' => $id]);

Вы также можете использовать функцию $builder->set() (описанную выше) при выполнении обновлений.

$builder->updateBatch()

Генерирует строку обновления на основе предоставленных данных и выполняет запрос. Вы можете передать в функцию массив или объект. Вот пример с использованием массива:

$data = [
   [
      'title' => 'My title' ,
      'name'  => 'My Name 2' ,
      'date'  => 'My date 2',
   ],
   [
      'title' => 'Another title' ,
      'name'  => 'Another Name 2' ,
      'date'  => 'Another date 2',
   ],
];

$builder->updateBatch($data, 'title');

// Produces:
// UPDATE `mytable` SET `name` = CASE
// WHEN `title` = 'My title' THEN 'My Name 2'
// WHEN `title` = 'Another title' THEN 'Another Name 2'
// ELSE `name` END,
// `date` = CASE
// WHEN `title` = 'My title' THEN 'My date 2'
// WHEN `title` = 'Another title' THEN 'Another date 2'
// ELSE `date` END
// WHERE `title` IN ('My title','Another title')

Первый параметр — ассоциативный массив значений, второй параметр — ключ условия.

Примечание

affectedRows() не даст правильных результатов с этим методом из-за особенностей его работы. Вместо этого, updateBatch() возвращает количество затронутых строк.

$builder->getCompiledUpdate()

Это работает точно так же, как $builder->getCompiledInsert(), за исключением того, что генерирует строку UPDATE SQL вместо строки INSERT SQL.

Для получения дополнительной информации см. документацию для $builder->getCompiledInsert().

Примечание

Этот метод не работает для пакетных обновлений.

Удаление данных

$builder->delete()

Генерирует строку SQL для удаления и выполняет запрос.

$builder->delete(['id' => $id]);
// Produces: // DELETE FROM mytable  // WHERE id = $id

Первый параметр — условие WHERE. Вы также можете использовать функции where() или or_where() вместо передачи данных в первый параметр функции:

$builder->where('id', $id);
$builder->delete();

// Produces:
// DELETE FROM mytable
// WHERE id = $id

Если вы хотите удалить все данные из таблицы, вы можете использовать функцию truncate() или emptyTable().

$builder->emptyTable()

Генерирует строку SQL для удаления и выполняет запрос:

$builder->emptyTable('mytable');
// Produces: DELETE FROM mytable

$builder->truncate()

Генерирует строку SQL для усечения и выполняет запрос.

$builder->truncate();

// Produce:
// TRUNCATE mytable

Примечание

Если команда TRUNCATE недоступна, truncate() будет выполнена как “DELETE FROM table”.

$builder->getCompiledDelete()

Это работает точно так же, как $builder->getCompiledInsert(), за исключением того, что генерирует строку DELETE SQL вместо строки INSERT SQL.

Для получения дополнительной информации см. документацию для $builder->getCompiledInsert().

Цепочки методов

Цепочки методов позволяют упростить синтаксис, соединяя несколько функций. Рассмотрим этот пример:

$query = $builder->select('title')
                 ->where('id', $id)
                 ->limit(10, 20)
                 ->get();

Сброс Query Builder

$builder->resetQuery()

Сброс Query Builder позволяет начать заново с запросом, не выполняя его предварительно с помощью методов, таких как $builder->get() или $builder->insert().

Это полезно в ситуациях, когда вы используете Query Builder для генерации SQL (например, $builder->getCompiledSelect()), но затем решите, например, выполнить запрос:

// Note that the second parameter of the ``get_compiled_select`` method is false
$sql = $builder->select(['field1','field2'])
               ->where('field3',5)
               ->getCompiledSelect(false);

// ...
// Do something crazy with the SQL code... like add it to a cron script for
// later execution or something...
// ...

$data = $builder->get()->getResultArray();

// Would execute and return an array of results of the following query:
// SELECT field1, field1 from mytable where field3 = 5;

Справочник по классу

CodeIgniter\Database\BaseBuilder
db()
Returns: Текущее используемое соединение с базой данных
Return type: ConnectionInterface

Возвращает текущее соединение с базой данных из $db. Полезно для доступа к методам ConnectionInterface, которые недоступны напрямую в Query Builder, например, insertID() или errors().

resetQuery()
Returns: BaseBuilder instance (method chaining)
Return type: BaseBuilder

Сбрасывает текущее состояние Query Builder. Полезно, когда нужно создать запрос, который может быть отменен при определенных условиях.

countAllResults([$reset = true])
Parameters:
  • $reset (bool) – Сбрасывать ли значения для SELECTs
Returns:

Количество строк в результате запроса

Return type:

int

Генерирует специфичный для платформы запрос, который считает все записи, возвращаемые запросом Query Builder.

countAll([$reset = true])
Parameters:
  • $reset (bool) – Сбрасывать ли значения для SELECTs
Returns:

Количество строк в результате запроса

Return type:

int

Генерирует специфичный для платформы запрос, который считает все записи в конкретной таблице.

get([$limit = null[, $offset = null[, $reset = true]]]])
Parameters:
  • $limit (int) – Пункт LIMIT
  • $offset (int) – Пункт OFFSET
  • $reset (bool) – Нужно ли очистить значения Query Builder?
Returns:

\CodeIgniter\Database\ResultInterface instance (method chaining)

Return type:

\CodeIgniter\Database\ResultInterface

Компилирует и выполняет SELECT инструкцию на основе уже вызванных методов Query Builder.

getWhere([$where = null[, $limit = null[, $offset = null[, $reset = true]]]]])
Parameters:
  • $where (string) – Пункт WHERE
  • $limit (int) – Пункт LIMIT
  • $offset (int) – Пункт OFFSET
  • $reset (bool) – Нужно ли очистить значения Query Builder?
Returns:

\CodeIgniter\Database\ResultInterface instance (method chaining)

Return type:

\CodeIgniter\Database\ResultInterface

То же, что и get(), но также позволяет добавить WHERE непосредственно.

select([$select = '*'[, $escape = null]])
Parameters:
  • $select (string) – Часть SELECT запроса
  • $escape (bool) – Нужно ли экранировать значения и идентификаторы
Returns:

BaseBuilder instance (method chaining)

Return type:

BaseBuilder

Добавляет пункт SELECT к запросу.

selectAvg([$select = ''[, $alias = '']])
Parameters:
  • $select (string) – Поле для вычисления среднего значения
  • $alias (string) – Псевдоним для результирующего имени значения
Returns:

BaseBuilder instance (method chaining)

Return type:

BaseBuilder

Добавляет пункт SELECT AVG(field) к запросу.

selectMax([$select = ''[, $alias = '']])
Parameters:
  • $select (string) – Поле для вычисления максимального значения
  • $alias (string) – Псевдоним для результирующего имени значения
Returns:

BaseBuilder instance (method chaining)

Return type:

BaseBuilder

Добавляет пункт SELECT MAX(field) к запросу.

selectMin([$select = ''[, $alias = '']])
Parameters:
  • $select (string) – Поле для вычисления минимального значения
  • $alias (string) – Псевдоним для результирующего имени значения
Returns:

BaseBuilder instance (method chaining)

Return type:

BaseBuilder

Добавляет пункт SELECT MIN(field) к запросу.

selectSum([$select = ''[, $alias = '']])
Parameters:
  • $select (string) – Поле для вычисления суммы
  • $alias (string) – Псевдоним для результирующего имени значения
Returns:

BaseBuilder instance (method chaining)

Return type:

BaseBuilder

Добавляет пункт SELECT SUM(field) к запросу.

selectCount([$select = ''[, $alias = '']])
Parameters:
  • $select (string) – Поле для вычисления среднего значения
  • $alias (string) – Псевдоним для результирующего имени значения
Returns:

BaseBuilder instance (method chaining)

Return type:

BaseBuilder

Добавляет пункт SELECT COUNT(field) к запросу.

distinct([$val = true])
Parameters:
  • $val (bool) – Желаемое значение флага “distinct”
Returns:

BaseBuilder instance (method chaining)

Return type:

BaseBuilder

Устанавливает флаг, который сообщает Query Builder добавить пункт DISTINCT к части SELECT запроса.

from($from[, $overwrite = false])
Parameters:
  • $from (mixed) – Имя(имена) таблицы; строка или массив
  • $overwrite (bool) – Следует ли удалить первую существующую таблицу?
Returns:

BaseBuilder instance (method chaining)

Return type:

BaseBuilder

Указывает пункт FROM запроса.

join($table, $cond[, $type = ''[, $escape = null]])
Параметры:
  • $table (string) – Имя таблицы для соединения
  • $cond (string) – Условие JOIN ON
  • $type (string) – Тип JOIN
  • $escape (bool) – Необходимо ли экранировать значения и идентификаторы
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Добавляет JOIN предложение к запросу.

where($key[, $value = null[, $escape = null]])
Параметры:
  • $key (mixed) – Имя поля для сравнения или ассоциативный массив
  • $value (mixed) – Если один ключ, сравнивается с этим значением
  • $escape (bool) – Необходимо ли экранировать значения и идентификаторы
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Генерирует WHERE часть запроса. Разделяет несколько вызовов с помощью AND.

orWhere($key[, $value = null[, $escape = null]])
Параметры:
  • $key (mixed) – Имя поля для сравнения или ассоциативный массив
  • $value (mixed) – Если один ключ, сравнивается с этим значением
  • $escape (bool) – Необходимо ли экранировать значения и идентификаторы
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Генерирует WHERE часть запроса. Разделяет несколько вызовов с помощью OR.

orWhereIn([$key = null[, $values = null[, $escape = null]]])
Параметры:
  • $key (string) – Поле для поиска
  • $values (array|Closure) – Массив целевых значений или анонимная функция для подзапроса
  • $escape (bool) – Необходимо ли экранировать значения и идентификаторы
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Генерирует WHERE поле IN('item', 'item') SQL запрос, объединенный с OR при необходимости.

orWhereNotIn([$key = null[, $values = null[, $escape = null]]])
Параметры:
  • $key (string) – Поле для поиска
  • $values (array|Closure) – Массив целевых значений или анонимная функция для подзапроса
  • $escape (bool) – Необходимо ли экранировать значения и идентификаторы
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Генерирует WHERE поле NOT IN('item', 'item') SQL запрос, объединенный с OR при необходимости.

whereIn([$key = null[, $values = null[, $escape = null]]])
Параметры:
  • $key (string) – Имя поля для проверки
  • $values (array|Closure) – Массив целевых значений или анонимная функция для подзапроса
  • $escape (bool) – Необходимо ли экранировать значения и идентификаторы
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Генерирует WHERE поле IN('item', 'item') SQL запрос, объединенный с AND при необходимости.

whereNotIn([$key = null[, $values = null[, $escape = null]]])
Параметры:
  • $key (string) – Имя поля для проверки
  • $values (array|Closure) – Массив целевых значений или анонимная функция для подзапроса
  • $escape (bool) – Необходимо ли экранировать значения и идентификаторы
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Генерирует WHERE поле NOT IN('item', 'item') SQL запрос, объединенный с AND при необходимости.

groupStart()
Возвращает: BaseBuilder экземпляр (цепочка методов)
Тип возвращаемого значения: BaseBuilder

Начинает групповое выражение, используя AND для условий внутри него.

orGroupStart()
Возвращает: BaseBuilder экземпляр (цепочка методов)
Тип возвращаемого значения: BaseBuilder

Начинает групповое выражение, используя OR для условий внутри него.

notGroupStart()
Возвращает: BaseBuilder экземпляр (цепочка методов)
Тип возвращаемого значения: BaseBuilder

Начинает групповое выражение, используя AND NOT для условий внутри него.

orNotGroupStart()
Возвращает: BaseBuilder экземпляр (цепочка методов)
Тип возвращаемого значения: BaseBuilder

Начинает групповое выражение, используя OR NOT для условий внутри него.

groupEnd()
Возвращает: BaseBuilder экземпляр (цепочка методов)
Тип возвращаемого значения: BaseBuilder

Завершает групповое выражение.

like($field[, $match = ''[, $side = 'both'[, $escape = null[, $insensitiveSearch = false]]]])
Параметры:
  • $field (string) – Имя поля
  • $match (string) – Текстовая часть для сопоставления
  • $side (string) – С какой стороны выражения разместить подстановочный знак ‘%’
  • $escape (bool) – Необходимо ли экранировать значения и идентификаторы
  • $insensitiveSearch (bool) – Необходимо ли выполнить поиск без учёта регистра
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Добавляет LIKE предложение к запросу, разделяя несколько вызовов с помощью AND.

orLike($field[, $match = ''[, $side = 'both'[, $escape = null[, $insensitiveSearch = false]]]])
Параметры:
  • $field (string) – Имя поля
  • $match (string) – Часть текста для сопоставления
  • $side (string) – Какую сторону выражения использовать для подстановки подстановочного знака ‘%’
  • $escape (bool) – Необходимо ли экранировать значения и идентификаторы
  • $insensitiveSearch (bool) – Необходимо ли принудительно выполнить поиск без учета регистра
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Добавляет LIKE условие к запросу, разделяя несколько классов с OR.

notLike($field[, $match = ''[, $side = 'both'[, $escape = null[, $insensitiveSearch = false]]]])
Параметры:
  • $field (string) – Имя поля
  • $match (string) – Часть текста для сопоставления
  • $side (string) – Какую сторону выражения использовать для подстановки подстановочного знака ‘%’
  • $escape (bool) – Необходимо ли экранировать значения и идентификаторы
  • $insensitiveSearch (bool) – Необходимо ли принудительно выполнить поиск без учета регистра
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Добавляет NOT LIKE условие к запросу, разделяя несколько вызовов с AND.

orNotLike($field[, $match = ''[, $side = 'both'[, $escape = null[, $insensitiveSearch = false]]]])
Параметры:
  • $field (string) – Имя поля
  • $match (string) – Часть текста для сопоставления
  • $side (string) – Какую сторону выражения использовать для подстановки подстановочного знака ‘%’
  • $escape (bool) – Необходимо ли экранировать значения и идентификаторы
  • $insensitiveSearch (bool) – Необходимо ли принудительно выполнить поиск без учета регистра
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Добавляет NOT LIKE условие к запросу, разделяя несколько вызовов с OR.

having($key[, $value = null[, $escape = null]])
Параметры:
  • $key (mixed) – Идентификатор (строка) или ассоциативный массив пар поле/значение
  • $value (string) – Искомое значение, если $key является идентификатором
  • $escape (string) – Необходимо ли экранировать значения и идентификаторы
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Добавляет HAVING условие к запросу, разделяя несколько вызовов с AND.

orHaving($key[, $value = null[, $escape = null]])
Параметры:
  • $key (mixed) – Идентификатор (строка) или ассоциативный массив пар поле/значение
  • $value (string) – Искомое значение, если $key является идентификатором
  • $escape (string) – Необходимо ли экранировать значения и идентификаторы
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Добавляет HAVING условие к запросу, разделяя несколько вызовов с OR.

orHavingIn([$key = null[, $values = null[, $escape = null]]])
Параметры:
  • $key (string) – Поле для поиска
  • $values (array|Closure) – Массив целевых значений или анонимная функция для подзапроса
  • $escape (bool) – Необходимо ли экранировать значения и идентификаторы
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Генерирует HAVING поле IN(‘элемент’, ‘элемент’) SQL-запрос, соединённый с OR при необходимости.

orHavingNotIn([$key = null[, $values = null[, $escape = null]]])
Параметры:
  • $key (string) – Поле для поиска
  • $values (array|Closure) – Массив целевых значений или анонимная функция для подзапроса
  • $escape (bool) – Необходимо ли экранировать значения и идентификаторы
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Генерирует HAVING поле NOT IN('item', 'item') SQL-запрос, соединённый с OR при необходимости.

havingIn([$key = null[, $values = null[, $escape = null]]])
Параметры:
  • $key (string) – Имя поля для проверки
  • $values (array|Closure) – Массив целевых значений или анонимная функция для подзапроса
  • $escape (bool) – Необходимо ли экранировать значения и идентификаторы
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Генерирует HAVING поле IN('item', 'item') SQL-запрос, соединённый с AND при необходимости.

havingNotIn([$key = null[, $values = null[, $escape = null]]])
Параметры:
  • $key (string) – Имя поля для проверки
  • $values (array|Closure) – Массив целевых значений или анонимная функция для подзапроса
  • $escape (bool) – Необходимо ли экранировать значения и идентификаторы
  • $insensitiveSearch (bool) – Необходимо ли принудительно выполнить поиск без учёта регистра
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Генерирует HAVING поле NOT IN('item', 'item') SQL-запрос, соединённый с AND при необходимости.

havingLike($field[, $match = ''[, $side = 'both'[, $escape = null[, $insensitiveSearch = false]]]])
Параметры:
  • $field (string) – Имя поля
  • $match (string) – Часть текста для сопоставления
  • $side (string) – Какую сторону выражения использовать для подстановки подстановочного знака ‘%’
  • $escape (bool) – Необходимо ли экранировать значения и идентификаторы
  • $insensitiveSearch (bool) – Необходимо ли принудительно выполнить поиск без учета регистра
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Добавляет LIKE условие к HAVING части запроса, разделяя несколько вызовов с AND.

orHavingLike($field[, $match = ''[, $side = 'both'[, $escape = null[, $insensitiveSearch = false]]]])
Параметры:
  • $field (string) – Имя поля
  • $match (string) – Часть текста для сопоставления
  • $side (string) – Какую сторону выражения использовать для подстановки подстановки «%»
  • $escape (bool) – Требуется ли экранирование значений и идентификаторов
  • $insensitiveSearch (bool) – Требуется ли поиск без учёта регистра
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Добавляет условие LIKE к части HAVING запроса, отделяя несколько условий с помощью OR.

notHavingLike($field[, $match = ''[, $side = 'both'[, $escape = null[, $insensitiveSearch = false]]]])
Параметры:
  • $field (string) – Имя поля
  • $match (string) – Часть текста для сопоставления
  • $side (string) – Какую сторону выражения использовать для подстановки подстановки «%»
  • $escape (bool) – Требуется ли экранирование значений и идентификаторов
  • $insensitiveSearch (bool) – Требуется ли поиск без учёта регистра
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Добавляет условие NOT LIKE к части HAVING запроса, отделяя несколько вызовов с помощью AND.

orNotHavingLike($field[, $match = ''[, $side = 'both'[, $escape = null[, $insensitiveSearch = false]]]])
Параметры:
  • $field (string) – Имя поля
  • $match (string) – Часть текста для сопоставления
  • $side (string) – Какую сторону выражения использовать для подстановки подстановки «%»
  • $escape (bool) – Требуется ли экранирование значений и идентификаторов
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Добавляет условие NOT LIKE к части HAVING запроса, отделяя несколько вызовов с помощью OR.

havingGroupStart()
Возвращает: BaseBuilder экземпляр (цепочка методов)
Тип возвращаемого значения: BaseBuilder

Начинает выражение группы для условия HAVING, используя AND для условий внутри него.

orHavingGroupStart()
Возвращает: BaseBuilder экземпляр (цепочка методов)
Тип возвращаемого значения: BaseBuilder

Начинает выражение группы для условия HAVING, используя OR для условий внутри него.

notHavingGroupStart()
Возвращает: BaseBuilder экземпляр (цепочка методов)
Тип возвращаемого значения: BaseBuilder

Начинает выражение группы для условия HAVING, используя AND NOT для условий внутри него.

orNotHavingGroupStart()
Возвращает: BaseBuilder экземпляр (цепочка методов)
Тип возвращаемого значения: BaseBuilder

Начинает выражение группы для условия HAVING, используя OR NOT для условий внутри него.

havingGroupEnd()
Возвращает: BaseBuilder экземпляр (цепочка методов)
Тип возвращаемого значения: BaseBuilder

Завершает выражение группы для условия HAVING.

groupBy($by[, $escape = null])
Параметры:
  • $by (mixed) – Поле(я) для группировки; строка или массив
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Добавляет условие GROUP BY к запросу.

orderBy($orderby[, $direction = ''[, $escape = null]])
Параметры:
  • $orderby (string) – Поле для сортировки
  • $direction (string) – Требуемый порядок - ASC, DESC или random
  • $escape (bool) – Требуется ли экранирование значений и идентификаторов
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Добавляет условие ORDER BY к запросу.

limit($value[, $offset = 0])
Параметры:
  • $value (int) – Количество строк для ограничения результатов
  • $offset (int) – Количество строк для пропуска
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Добавляет условия LIMIT и OFFSET к запросу.

offset($offset)
Параметры:
  • $offset (int) – Количество строк для пропуска
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Добавляет условие OFFSET к запросу.

set($key[, $value = ''[, $escape = null]])
Параметры:
  • $key (mixed) – Имя поля или массив пар поле/значение
  • $value (mixed) – Значение поля, если $key – одно поле
  • $escape (bool) – Требуется ли экранирование значений
Возвращает:

BaseBuilder экземпляр (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Добавляет пары поле/значение, которые будут переданы позднее в insert(), update() или replace().

insert([$set = null[, $escape = null]])
Параметры:
  • $set (array) – Ассоциативный массив пар поле/значение
  • $escape (bool) – Требуется ли экранирование значений
Возвращает:

true при успехе, false при ошибке

Тип возвращаемого значения:

bool

Компилирует и выполняет оператор INSERT.

insertBatch([$set = null[, $escape = null[, $batch_size = 100]]])
Параметры:
  • $set (array) – Данные для вставки
  • $escape (bool) – Нужно ли экранировать значения
  • $batch_size (int) – Количество строк для вставки за раз
Возвращает:

Количество вставленных строк или false при ошибке

Тип возвращаемого значения:

int|false

Компилирует и выполняет пакетные INSERT операторы.

Примечание

Если предоставлено более $batch_size строк, будут выполнены несколько INSERT запросов, каждый из которых будет пытаться вставить до $batch_size строк.

setInsertBatch($key[, $value = ''[, $escape = null]])
Параметры:
  • $key (mixed) – Имя поля или массив пар поле/значение
  • $value (string) – Значение поля, если $key — единственное поле
  • $escape (bool) – Нужно ли экранировать значения
Возвращает:

Экземпляр BaseBuilder (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Добавляет пары поле/значение, которые будут вставлены в таблицу позже с помощью insertBatch().

update([$set = null[, $where = null[, $limit = null]]])
Параметры:
  • $set (array) – Ассоциативный массив пар поле/значение
  • $where (string) – Оператор WHERE
  • $limit (int) – Оператор LIMIT
Возвращает:

true при успехе, false при ошибке

Тип возвращаемого значения:

bool

Компилирует и выполняет оператор UPDATE.

updateBatch([$set = null[, $value = null[, $batch_size = 100]]])
Параметры:
  • $set (array) – Имя поля или ассоциативный массив пар поле/значение
  • $value (string) – Значение поля, если $set — единственное поле
  • $batch_size (int) – Количество условий для группировки в одном запросе
Возвращает:

Количество обновлённых строк или false при ошибке

Тип возвращаемого значения:

int|false

Компилирует и выполняет пакетные UPDATE операторы.

Примечание

Если предоставлено более $batch_size пар поле/значение, будут выполнены несколько запросов, каждый из которых обработает до $batch_size пар поле/значение.

setUpdateBatch($key[, $value = ''[, $escape = null]])
Параметры:
  • $key (mixed) – Имя поля или массив пар поле/значение
  • $value (string) – Значение поля, если $key — единственное поле
  • $escape (bool) – Нужно ли экранировать значения
Возвращает:

Экземпляр BaseBuilder (цепочка методов)

Тип возвращаемого значения:

BaseBuilder

Добавляет пары поле/значение, которые будут обновлены в таблице позже с помощью updateBatch().

replace([$set = null])
Параметры:
  • $set (array) – Ассоциативный массив пар поле/значение
Возвращает:

true при успехе, false при ошибке

Тип возвращаемого значения:

bool

Компилирует и выполняет оператор REPLACE.

delete([$where = ''[, $limit = null[, $reset_data = true]]])
Параметры:
  • $where (string) – Оператор WHERE
  • $limit (int) – Оператор LIMIT
  • $reset_data (bool) – true для сброса условия запроса “запись”
Возвращает:

экземпляр BaseBuilder (цепочка методов) или false при ошибке

Тип возвращаемого значения:

BaseBuilder|false

Компилирует и выполняет запрос DELETE.

increment($column[, $value = 1])
Параметры:
  • $column (string) – Имя столбца для инкремента
  • $value (int) – Значение для инкремента столбца

Увеличивает значение поля на указанную величину. Если поле не является числовым, например, VARCHAR, оно, вероятно, будет заменено на $value.

decrement($column[, $value = 1])
Параметры:
  • $column (string) – Имя столбца для декремента
  • $value (int) – Значение для декремента столбца

Уменьшает значение поля на указанную величину. Если поле не является числовым, например, VARCHAR, оно, вероятно, будет заменено на $value.

truncate()
Возвращает: true при успехе, false при ошибке, строка в режиме тестирования
Тип возвращаемого значения: bool|string

Выполняет оператор TRUNCATE в таблице.

Примечание

Если платформа базы данных, используемая в данный момент, не поддерживает TRUNCATE, будет использован оператор DELETE.

emptyTable()
Возвращает: true при успехе, false при ошибке
Тип возвращаемого значения: bool

Удаляет все записи из таблицы с помощью оператора DELETE.

getCompiledSelect([$reset = true])
Параметры:
  • $reset (bool) – Нужно ли сбрасывать текущие значения QB?
Возвращает:

Скомпилированное SQL-выражение в виде строки

Тип возвращаемого значения:

string

Компилирует оператор SELECT и возвращает его в виде строки.

getCompiledInsert([$reset = true])
Параметры:
  • $reset (bool) – Нужно ли сбрасывать текущие значения QB?
Возвращает:

Скомпилированное SQL-выражение в виде строки

Тип возвращаемого значения:

string

Компилирует оператор INSERT и возвращает его в виде строки.

getCompiledUpdate([$reset = true])
Параметры:
  • $reset (bool) – Нужно ли сбросить текущие значения QB?
Возвращает:

Скомпилированное SQL-выражение в виде строки

Тип возвращаемого значения:

строка

Компилирует UPDATE выражение и возвращает его в виде строки.

getCompiledDelete([$reset = true])
Параметры:
  • $reset (bool) – Нужно ли сбросить текущие значения QB?
Возвращает:

Скомпилированное SQL-выражение в виде строки

Тип возвращаемого значения:

строка

Компилирует DELETE выражение и возвращает его в виде строки.

© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/user_guide/database/query_builder.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API