digitalstars / simple-sql
Библиотека для генерации SQL запросов
Requires
- php: >=8.0
- ext-json: *
- ext-mbstring: *
- ext-pdo: *
This package is auto-updated.
Last update: 2024-10-18 13:13:49 UTC
README
Подключение
composer require digitalstars/simple-sql
В общих словах
Библиотека представляет собой удобный интерфейс для конструирования SQL запросов.
Быстрый старт
Ниже приведён пример подключения библиотеки и настройки, необходимой для начала работы. Все примеры будут приведены без этих строк инициализации.
require_once __DIR__ . "/lib/autoload.php"; use DigitalStars\SimpleSQL\Parser; $pdo = new \PDO(DB_DSN, DB_LOGIN, DB_PASS); Parser::setPDO($pdo);
Оглавление
- Основные компоненты
- Parser - Класс для постобработки запроса, заполняет типизированные заполнители значениями.
- setPDO - Устанавливает объект PDO, который будет использоваться для подготовки параметров запроса.
- From - Компонент, представляющий таблицу в запросе, к которой идёт обращение.
create
- Статический метод, инициализация объекта From.getFrom
- Возвращает имя таблицы или объект Select.setFrom
- Устанавливает имя таблицы или объект Select.getAlias
- Возвращает алиас таблицы.setAlias
- Устанавливает алиас таблицы.getSql
- Возвращает сгенерированную строку запроса.getSqlRaw
- Возвращает сгенерированную строку запроса и значения для заполнителей.
- Join - Компонент, представляющий JOIN-а в запросе.
create
- Статический метод, инициализация объекта Join.getLateral
- Возвращает true, если JOIN является LATERAL.setLateral
- Устанавливает JOIN как LATERAL.setType
- Устанавливает тип JOIN-а.getType
- Возвращает тип JOIN-а.setFrom
- Устанавливает таблицу для запроса.getFrom
- Возвращает объект From, который был установлен в запросе.setWhere
- Устанавливает условие соединения JOIN-а.getWhere
- Возвращает объект Where (условие JOIN-а).getSql
- Возвращает сгенерированную строку запроса.getSqlRaw
- Возвращает сгенерированную строку запроса и значения для заполнителей.
- Where - Компонент, представляющий конструктор условия, может быть использован как для WHERE, так и для ON.
create
- Статический метод, инициализация объекта Where.isEmpty
- Возвращает true, если объект Where пустой.w_and
- Добавляет к текущему объекту Where условие через AND.w_or
- Добавляет к текущему объекту Where условие через OR.clear
- Очищает текущий объект Where от условий.getSqlRaw
- Возвращает сгенерированную строку запроса и значения для заполнителей.
- Parser - Класс для постобработки запроса, заполняет типизированные заполнители значениями.
- Select запросы - Конструктор запросов SELECT.
create
- Статический метод, инициализация объекта Select.setSelect
- Устанавливает список полей для выборки.addSelectList
- Добавляет поля к уже существующим.addSelect
- Добавляет поле в список выборки.getSelect
- Возвращает список полей для выборки.setFrom
- Устанавливает таблицу для запроса.getFrom
- Задаёт таблицу для запроса.getJoinList
- Возвращает список объектов Join.addJoin
, в список JOIN-ов.setJoin
, в список JOIN-ов.getWhere
- Возвращает условие WHERE.setWhere
- Устанавливает условие WHERE.getGroupBy
- Возвращает список полей для группировки.setGroupBy
- Устанавливает список полей для группировки.getHawing
- Возвращает условие HAVING.setHawing
- Устанавливает условие HAVING.getOrderBy
- Возвращает список полей для сортировки.setOrderBy
- Устанавливает список полей для сортировки.addOrderBy
- Добавляет полей для сортировки в конец уже заданных.getLimit
- Возвращает количество строк, которые будут выбраны.setLimit
- Устанавливает количество строк, которые будут выбраны.getShareMode
- Возвращает режим блокировки.setShareModeUpdate
- Устанавливает режим FOR UPDATE.setShareModeShare
- Устанавливает режим FOR SHARE.setShareModeDefault
- Устанавливает режим блокировки по умолчанию.getSelectArray
- Собирает и возвращает массив, который содержит в себе все поля выборки.getSelectFeels
- Возвращает массив алиасов полей выборки.getSql
- Возвращает сгенерированную строку запроса.getSqlRaw
- Возвращает сгенерированную строку запроса и значения для заполнителей.
- INSERT запросы - Конструктор запросов INSERT.
create
- Статический метод, инициализация объекта Insert.setFields
- Устанавливает список полей для вставки.addField
- Добавляет поле в список полей для вставки.getFields
- Возвращает список полей для вставки.setValues
- Устанавливает список значений для вставки.addValues
- Добавляет значения для вставки.getValues
- Возвращает список значений для вставки.setFrom
- Устанавливает таблицу, в которую будет производиться вставка.getFrom
- Возвращает таблицу, в которую будет производиться вставка.setIgnoreDuplicate
- Устанавливает флаг IGNORE в INSERT.getIgnoreDuplicate
- Возвращает true, если установлен флаг IGNORE.setFieldsUpdateOnDuplicate
- Устанавливает список полей, которые будут обновлены в случае, если запись уже существует.addFieldsUpdateOnDuplicate
- Добавляет поле в список полей, которые будут обновлены в случае, если запись уже существует.getFieldsUpdateOnDuplicate
- Возвращает список полей, которые будут обновлены в случае, если запись уже существует.getSql
- Возвращает сгенерированную строку запроса.getSqlRaw
- Возвращает сгенерированную строку запроса и значения для заполнителей.
- UPDATE запросы - Конструктор запросов UPDATE.
create
- Статический метод, инициализация объекта Update.setSet
- Устанавливает список полей для обновления.addSet
- Добавляет поле в список полей для обновления.getSet
- Возвращает список полей для обновления.getSetSQLRaw
и значения для заполнителей.getFrom
- Возвращает таблицу, в которой будет производиться обновление.setFrom
- Устанавливает таблицу, в которой будет производиться обновление.getJoinList
- Возвращает список объектов Join.setJoin
, в список JOIN-ов.addJoin
, в список JOIN-ов.getWhere
- Возвращает условие WHERE.setWhere
- Устанавливает условие WHERE.getLimit
- Возвращает количество строк, которые будут обновлены.setLimit
- Устанавливает количество строк, которые будут обновлены.getSql
- Возвращает сгенерированную строку запроса.getSqlRaw
- Возвращает сгенерированную строку запроса и значения для заполнителей.
- DELETE запросы - Конструктор запросов DELETE.
create
- Статический метод, инициализация объекта Delete.getFrom
- Возвращает таблицу, из которой будут удалены строки.setFrom
- Устанавливает таблицу, из которой будут удалены строки.getWhere
- Возвращает условие WHERE.setWhere
- Устанавливает условие WHERE.getLimit
- Возвращает количество строк, которые будут удалены.setLimit
- Устанавливает количество строк, которые будут удалены.getSql
- Возвращает сгенерированную строку запроса.getSqlRaw
- Возвращает сгенерированную строку запроса и значения для заполнителей.
Основные компоненты
Parser
Класс Parser - это постобработка запроса. Он заполняет типизированные заполнители значениями.
static function setPDO(\PDO $pdo)
Метод устанавливает объект PDO, который будет использоваться для подготовки параметров запроса.
Внимание! Метод setPDO должен быть вызван до начала использования библиотеки.
From
Компонент From является обязательным для всех запросов. Он представляет из себя конструктор таблицы в запросе, к которой идёт обращение.
static create(string|Select $sql = null, string $alias = null): self
Статический метод, инициализация объекта From.
Аргументы:
- $sql - строка с именем таблицы в формате 'table_name' или сразу с алиасом 'table_name tn', или объект Select, который будет использован в качестве подзапроса.
- $alias - алиас таблицы.
Если не указан алиас, то он будет сгенерирован автоматически.
getFrom(): string|Select
Возвращает имя таблицы или объект Select.
setFrom(string|Select $sql = null): self
Устанавливает имя таблицы или объект Select, который будет использован в качестве подзапроса.
getAlias(): string
Возвращает алиас таблицы.
setAlias(string $alias): self
Устанавливает алиас таблицы.
getSql(): string
Возвращает строку запроса, которая была сгенерирована и все заполнители заменены на значения.
getSqlRaw(): array
Метод используется для внутреннего взаимодействия внутри библиотеки. Но может быть полезен для отладки.
Возвращает массив:
- 'sql' => string - строка запроса, которая была сгенерирована, но заполнители не были заменены на значения.
- 'values' => array - массив значений для заполнителей.
Join
Компонент Join представляет из себя конструктор JOIN-а в запросе.
static create(string $type = null, From|string $from = null, Where|string $where_or_lexema = null, $where_value = null): self
Статический метод, инициализация объекта Join.
Аргументы:
- $type - тип JOIN-а. Возможные значения: 'INNER', 'LEFT', 'RIGHT'.
- $from - объект From или строка с именем таблицы в формате 'table_name' или сразу с алиасом 'table_name tn'.
- $where_or_lexema - объект Where или строка с условием JOIN-а.
- $where_value - значение для заполнителя в условии JOIN-а.
Также есть статические методы для инициализации объекта Join для каждого типа JOIN-а. в них нет параметра $type:
- static function inner(From|string $from, Where|string $where_or_lexema = null, $where_value = null): self - INNER JOIN
- static function left(From|string $from, Where|string $where_or_lexema = null, $where_value = null): self - **LEFT JOIN **
- static function right(From|string $from, Where|string $where_or_lexema = null, $where_value = null): self - RIGHT JOIN
- static function innerLateral(From|string $from, Where|string $where_or_lexema = null, $where_value = null): self - * INNER JOIN LATERAL*
- static function leftLateral(From|string $from, Where|string $where_or_lexema = null, $where_value = null): self - * LEFT JOIN LATERAL*
- static function rightLateral(From|string $from, Where|string $where_or_lexema = null, $where_value = null): self - * RIGHT JOIN LATERAL*
getLateral(): bool
Возвращает true, если JOIN является LATERAL.
setLateral(bool $is = true): self
Устанавливает JOIN как LATERAL.
setType(string $type): self
Устанавливает тип JOIN-а. Возможные значения: 'INNER', 'LEFT', 'RIGHT'.
getType(): string
Возвращает тип JOIN-а.
setFrom(string|Select|From $from = null, string $alias = null): self
Устанавливает таблицу для запроса.
Параметры:
- $from - имя таблицы (в формате с алиасом или без), объект Select (подзапрос) или объект From (созданный заранее).
- $alias - алиас таблицы. (не обязательный). Если не указан, то будет сгенерирован автоматически.
getFrom(): From
Возвращает объект From, который был установлен в запросе.
setWhere(Where $where): self
Устанавливает объект Where для JOIN-а. По сути, это условие ON.
getWhere(): Where
Возвращает объект Where, который был установлен в запросе.
getSql(): string
Возвращает строку запроса, которая была сгенерирована и все заполнители заменены на значения.
getSqlRaw(): array
Метод используется для внутреннего взаимодействия внутри библиотеки. Но может быть полезен для отладки.
Возвращает массив:
- 'sql' => string - строка запроса, которая была сгенерирована, но заполнители не были заменены на значения.
- 'values' => array - массив значений для заполнителей.
Where
Компонент Where представляет из себя конструктор условия. Он может быть использован как для WHERE, так и для ON.
Внимание! Whare активно использует заполнители, и поддерживает все заполнители из digitalstars/DataBase. Подробнее о них можно прочитать в документации к библиотеке digitalstars/DataBase.
static create(Where|string $lexema = null, array|string|int $value = null): self
Статический метод, инициализация объекта Where.
Аргументы:
- $lexema - строка с условием. Может быть как другим объектом Where, так и строкой, содержащей заполнители.
- $value - значение для заполнителя в условии. Если нужно передать несколько значений, то передаётся массив. Если нужно передать массив в качестве 1 значения (например для IN), то он должен быть обёрнут в массив.
isEmpty(): bool
Возвращает true, если объект Where пустой.
w_and($lexema = null, $value = null): self
Добавляет к текущему объекту Where условие через AND.
w_or($lexema = null, $value = null): self
Добавляет к текущему объекту Where условие через OR.
clear(): self
Очищает текущий объект Where от условий.
getSqlRaw(): ?array
Метод используется для внутреннего взаимодействия внутри библиотеки. Но может быть полезен для отладки.
Возвращает массив:
- 'sql' => string - строка запроса, которая была сгенерирована, но заполнители не были заменены на значения.
- 'values' => array - массив значений для заполнителей.
SELECT запросы
Класс Select представляет из себя конструктор запросов SELECT.
static create(): self
Статический метод, инициализация объекта Select.
setSelect(array $sql)
Устанавливает список полей для выборки. Принимает как массив полей, так и ассоциативный массив, где ключи - это алиасы, а значения - это поля таблицы или функции.
addSelectList(array $sql)
То же самое, что и setSelect, но добавляет поля к уже существующим.
Примеры:
Передаём массив полей:
use DigitalStars\SimpleSQL\Select; $select = Select::create()->setFrom('table_name tn'); // Устанавливаем таблицу в From $select->setSelect(['id', 'name', 'age']);
SELECT tn.id AS tn_id, tn.name AS tn_name, tn.age AS tn_age FROM table_name tn
Передаём массив полей, часть из которых с алиасами, часть вычисляемые:
$select->setSelect([ 'id', 'name', 'age_now' => 'tn.age', 'age_plus_10' => 'tn.age + 10', 'age_plus_20' => 'tn.age + 20' ]);
SELECT tn.id AS tn_id, tn.name AS tn_name, tn.age AS age_now, tn.age + 10 AS age_plus_10, tn.age + 20 AS age_plus_20 FROM table_name tn
addSelect(string $field, string $alias = null): self
Добавляет поле в список выборки.
- $field - имя поля или выражение.
- $alias - алиас поля. (не обязательный)
Примеры:
use DigitalStars\SimpleSQL\Select; $select = Select::create()->setFrom('table_name tn'); // Устанавливаем таблицу в From $select->addSelect('id'); $select->addSelect('name'); $select->addSelect('age', 'age_now'); $select->addSelect('age + 10', 'age_plus_10'); $select->addSelect('age + 20', 'age_plus_20');
SELECT tn.id AS tn_id, tn.name AS tn_name, age AS age_now, age + 10 AS age_plus_10, age + 20 AS age_plus_20 FROM table_name tn
getSelect(): array
Возвращает список полей для выборки. В том же формате, что и передавался в setSelect.
setFrom(string|Select|From $from = null, string $alias = null): self
Устанавливает таблицу для запроса.
Параметры:
- $from - имя таблицы (в формате с алиасом или без), объект Select (подзапрос) или объект From (созданный заранее).
- $alias - алиас таблицы. (не обязательный). Если не указан, то будет сгенерирован автоматически.
Примеры:
Пример 1:
use DigitalStars\SimpleSQL\Select; use DigitalStars\SimpleSQL\Components\From; $select = Select::create()->setSelect(['id', 'name', 'age']); $select->setFrom('table_name tn'); // Или $select->setFrom('table_name tn', 'tn'); // Или $from = From::create('table_name tn'); $select->setFrom($from); // Или $from = From::create('table_name', 'tn'); $select->setFrom($from); // Или $select->setFrom('table_name');
SELECT tn.id AS tn_id, tn.name AS tn_name, tn.age AS tn_age FROM table_name tn
Пример 2:
use DigitalStars\SimpleSQL\Select; $select_sub = Select::create() ->setSelect(['id', 'name', 'age']) ->setFrom('table_name tn'); $select = Select::create() ->setSelect(['tn_name', 'tn_age']) ->setFrom($select_sub, 'sub');
SELECT sub.tn_name AS sub_tn_name, sub.tn_age AS sub_tn_age FROM (SELECT tn.id AS tn_id, tn.name AS tn_name, tn.age AS tn_age FROM table_name tn) sub
getFrom(): From
Возвращает объект From, который был установлен в запросе.
getJoinList(): array
Возвращает список объектов Join, которые были установлены в запросе.
addJoin(array|Join $join): self
Добавляет объект Join (или массив объектов), в список JOIN-ов.
setJoin(array|Join $join = null): self
Устанавливает объект Join (или массив объектов), в список JOIN-ов.
Примеры использования JOIN-ов:
Пример 1:
use DigitalStars\SimpleSQL\Components\Join; $select = Select::create() ->setSelect(['name', 'age', 't2.other_info', 't3.other_info']) ->setFrom('table_name_one', 'tno') ->addJoin(Join::inner('table_name_two t2', 'tno.id = t2.id')) ->addJoin(Join::left('table_name_three t3', 'tno.id = t3.id'));
SELECT tno.name AS tno_name, tno.age AS tno_age, t2.other_info AS t2_other_info, t3.other_info AS t3_other_info FROM table_name_one tno INNER JOIN table_name_two t2 on (tno.id = t2.id) LEFT JOIN table_name_three t3 on (tno.id = t3.id)
Пример 2 (с подзапросом):
$select1 = Select::create() ->setSelect(['id', 'name', 'age', 't2.other_info', 't3.other_info']) ->setFrom('table_name_one', 'tno') ->addJoin(Join::inner('table_name_two t2', 'tno.id = t2.id')) ->addJoin(Join::left('table_name_three t3', 'tno.id = t3.id')); $select = Select::create() ->setSelect(["t.id", "inf.tno_name", 'sum' => 'inf.t2_other_info + IFNULL(inf.t3_other_info, 0)']) ->setFrom('main_table', 't') ->addJoin(Join::inner(From::create($select1, 'inf'), 'inf.tno_id = t.id'));
SELECT t.id AS t_id, inf.tno_name AS inf_tno_name, inf.t2_other_info + IFNULL(inf.t3_other_info, 0) AS sum FROM main_table t INNER JOIN (SELECT tno.id AS tno_id, tno.name AS tno_name, tno.age AS tno_age, t2.other_info AS t2_other_info, t3.other_info AS t3_other_info FROM table_name_one tno INNER JOIN table_name_two t2 on (tno.id = t2.id) LEFT JOIN table_name_three t3 on (tno.id = t3.id)) inf on (inf.tno_id = t.id)
getWhere(): Where
Возвращает объект Where, который был установлен в запросе.
setWhere(Where $where = null): self
Устанавливает объект Where в запросе.
Пример:
use DigitalStars\SimpleSQL\Select; use DigitalStars\SimpleSQL\Components\Where; $select = Select::create() ->setSelect(['id', 'name', 'age']) ->setFrom('table_name tn') ->setWhere(Where::create('age > ?i', 18)->w_and('name = ?s', 'John'));
SELECT tn.id AS tn_id, tn.name AS tn_name, tn.age AS tn_age FROM table_name tn WHERE (age > 18 AND name = 'John')
getGroupBy(): array
Возвращает список полей для группировки.
setGroupBy(array $group_by = null): self
Устанавливает список полей для группировки. Принимает массив алиасов или полей (как в setSelect).
Пример:
use DigitalStars\SimpleSQL\Select; $select = Select::create() ->setSelect(['name', 'age', 'sum_salary' => 'SUM(salary)']) ->setFrom('table_name tn') ->setGroupBy(['name', 'age']);
SELECT tn.name AS tn_name, tn.age AS tn_age, SUM(salary) AS sum_salary FROM table_name tn GROUP BY tn.name, tn.age
getHawing(): Where
Возвращает объект Where, который был установлен в запросе.
setHawing(Where $hawing = null): self
Устанавливает объект Where в запросе.
Пример:
use DigitalStars\SimpleSQL\Select; use DigitalStars\SimpleSQL\Components\Where; $select = Select::create() ->setSelect(['name', 'age', 'sum_salary' => 'SUM(salary)']) ->setFrom('table_name tn') ->setGroupBy(['name', 'age']) ->setHawing(Where::create('sum_salary > ?i', 1000));
SELECT tn.name AS tn_name, tn.age AS tn_age, SUM(salary) AS sum_salary FROM table_name tn GROUP BY tn.name, tn.age HAVING (sum_salary > 1000)
getOrderBy(): array
Возвращает список полей для сортировки в том формате, в котором они были установлены (setOrderBy).
setOrderBy(array $order_by = null): self
Устанавливает список полей для сортировки. Ключ - это поле (как в методе setGroupBy), значение - это направление сортировки.
Пример:
use DigitalStars\SimpleSQL\Select; $select = Select::create() ->setSelect(['name', 'age', 'sum_salary' => 'SUM(salary)']) ->setFrom('table_name tn') ->setGroupBy(['name', 'age']) ->setOrderBy(['name' => 'ASC', 'age' => 'DESC']);
SELECT tn.name AS tn_name, tn.age AS tn_age, SUM(salary) AS sum_salary FROM table_name tn GROUP BY tn.name, tn.age ORDER BY tn.name ASC, tn.age DESC
addOrderBy(array $order_by): self
Добавляет полей для сортировки в конец уже заданных. При наличии повторяющихся ключей, они не будут перезаписаны.
getLimit(): ?int
Возвращает количество строк, которые будут выбраны. В случае, если не установлено, то возвращает null.
setLimit(?int $limit = null): self
Устанавливает количество строк, которые будут выбраны.
getShareMode(): ?string
Возвращает режим блокировки. В случае, если не установлено, то возвращает null.
setShareModeUpdate(): self
Устанавливает режим FOR UPDATE.
setShareModeShare(): self
Устанавливает режим FOR SHARE.
setShareModeDefault(): self
Устанавливает режим блокировки по умолчанию.
getSelectArray(): array
Собирает и возвращает массив, который содержит в себе все поля выборки в формате, который используется в запросе.
Ключ - это алиас поля, значение - это поле или выражение.
getSelectFeels(): array
Возвращает массив алиасов полей выборки.
getSql(): string
Возвращает строку запроса, которая была сгенерирована и все заполнители заменены на значения.
getSqlRaw(): array
Метод используется для внутреннего взаимодействия внутри библиотеки. Но может быть полезен для отладки.
Возвращает массив:
- 'sql' => string - строка запроса, которая была сгенерирована, но заполнители не были заменены на значения.
- 'values' => array - массив значений для заполнителей.
INSERT запросы
Класс Insert представляет из себя конструктор запросов INSERT.
static create(): self
Статический метод, инициализация объекта Insert.
setFields(array $sql = []): self
Устанавливает список полей для вставки. Принимает ассоциативный массив, где ключи - это поля, а значения - это заполнитель (или значение для вставки).
addField(string $field, string|int|float $placeholder_or_raw_value = null): self
Добавляет поле в список полей для вставки.
Параметры:
- $field - имя поля.
- $placeholder_or_raw_value - заполнитель (или значение для вставки).
getFields(): array
Возвращает список полей для вставки. (в том же формате, в котором они были установлены методом setFields).
setValues(array|Select $values = []): self
Устанавливает список значений для вставки. Принимает массив значений или объект Select (если нужно вставить значения как из результата выполнения Select запроса).
Внимание! Каждый элемент массива - это массив значений всех полей, под каждый заполнитель
addValues(array $values = []): self
Добавляет значения для вставки.
getValues(): array|Select
Возвращает список значений для вставки (или объект Select). В том же формате, в котором они были установлены методом setValues.
setFrom(string|Select|From $from = null, string $alias = null): self
Устанавливает таблицу, в которую будет производиться вставка.
getFrom(): From
Возвращает объект From, который был установлен в запросе.
setIgnoreDuplicate(bool $is_ignore_duplicate = true): self
Устанавливает флаг IGNORE в INSERT.
getIgnoreDuplicate(): bool
Возвращает true, если установлен флаг IGNORE.
setFieldsUpdateOnDuplicate(array $fields = []): self
Устанавливает список полей, которые будут обновлены в случае, если запись уже существует.
addFieldsUpdateOnDuplicate(array|string $fields): self
Добавляет поле в список полей, которые будут обновлены в случае, если запись уже существует.
getFieldsUpdateOnDuplicate(): array
Возвращает список полей, которые будут обновлены в случае, если запись уже существует.
getSql(): string
Возвращает строку запроса, которая была сгенерирована и все заполнители заменены на значения.
getSqlRaw(): array
Метод используется для внутреннего взаимодействия внутри библиотеки. Но может быть полезен для отладки.
Возвращает массив:
- 'sql' => string - строка запроса, которая была сгенерирована, но заполнители не были заменены на значения.
- 'values' => array - массив значений для заполнителей.
Примеры использования:
Пример 1:
use DigitalStars\SimpleSQL\Insert; $insert = Insert::create() ->setFields(['name' => '?s', 'age' => '?i']) ->addValues(['John', 25]) ->addValues(['Mike', 30]) ->setFrom('table_name') ->setFieldsUpdateOnDuplicate(['age']); // Или $insert = Insert::create() ->setFields(['name' => '?s', 'age' => '?i']) ->setValues([['John', 25], ['Mike', 30]]) ->setFrom('table_name') ->setFieldsUpdateOnDuplicate(['age']);
INSERT INTO table_name (name, age) VALUES ('John', 25), ('Mike', 30) ON DUPLICATE KEY UPDATE age = VALUES(age)
Пример 2 (значения из Select запроса):
use DigitalStars\SimpleSQL\Insert; use DigitalStars\SimpleSQL\Select; $select = Select::create() ->setSelect(['name', 'age']) ->setFrom('table_name_2'); $insert = Insert::create() ->setFields(['name' => '?s', 'age' => '?i']) ->setValues($select) ->setFrom('table_name') ->setIgnoreDuplicate();
INSERT IGNORE INTO table_name (name, age) SELECT tn2.name AS tn2_name, tn2.age AS tn2_age FROM table_name_2 tn2
UPDATE запросы
Класс Update представляет из себя конструктор запросов UPDATE.
static create(): self
Статический метод, инициализация объекта Update.
setSet(array $sql = [], array $values = []): self
Устанавливает список полей и их значений для обновления.
Параметры:
- $sql - ассоциативный массив, где ключи - это поля, а значения - это заполнитель (или значение для вставки без валидации).
- $values - массив значений, которые будут подставлены под заполнители
addSet(string $field, string|int|float $placeholder_or_raw_value = null, $value = null): self
Добавляет поле и его значение для обновления.
Параметры:
- $field - имя поля.
- $placeholder_or_raw_value - заполнитель (или значение для вставки без валидации).
- $value - значение для заполнителя.
getSet(): array
Возвращает список полей и их значений для обновления.
Возвращает ассоциативный массив, где ключи - это поля, а значения, следующий массив:
field
- имя поля.placeholder
- заполнитель (или значение для вставки без валидации).value
- значение для заполнителя.
getSetSQLRaw(): array
Возвращает данные, которые были установлены для обновления. Используется для внутреннего взаимодействия внутри библиотеки. Но может быть полезен для отладки.
Возвращает массив:
- 'sql' => SQL запрос, который был сгенерирован, но заполнители не были заменены на значения.
- 'values' => массив значений для заполнителей.
getFrom(): From
Возвращает объект From, который был установлен в запросе.
setFrom(string|Select|From $from = null, string $alias = null): self
Устанавливает таблицу, в которой будет производиться обновление.
getJoinList(): array
Возвращает список объектов Join, которые были установлены в запросе. (По аналоии с Select)
setJoin(array|Join $join = null): self
Устанавливает объект Join (или массив объектов), в список JOIN-ов. (По аналоии с Select)
addJoin(array|Join $join): self
Добавляет объект Join (или массив объектов), в список JOIN-ов. (По аналоии с Select)
getWhere(): Where
Возвращает объект Where, который был установлен в запросе. Отвечает за условие WHERE.
setWhere(Where $where = null): self
Устанавливает объект Where в запросе. Отвечает за условие WHERE.
getLimit(): ?int
Возвращает количество строк, которые будут обновлены. В случае, если не установлено, то возвращает null.
setLimit(?int $limit = null): self
Устанавливает количество строк, которые будут обновлены.
getSql(): string
Возвращает строку запроса, которая была сгенерирована и все заполнители заменены на значения.
getSqlRaw(): array
Метод используется для внутреннего взаимодействия внутри библиотеки. Но может быть полезен для отладки.
Возвращает массив:
- 'sql' => string - строка запроса, которая была сгенерирована, но заполнители не были заменены на значения.
- 'values' => array - массив значений для заполнителей.
Примеры использования:
Пример 1:
use DigitalStars\SimpleSQL\Update; $update = Update::create() ->setSet(['name' => '?s', 'age' => '?i'], ['John', 25]) ->setFrom('table_name') ->setWhere(Where::create('tn.id = ?i', 1)); // Или $update = Update::create() ->addSet('name', '?s', 'John') ->addSet('age', '?i', 25) ->setFrom('table_name') ->setWhere(Where::create('tn.id = ?i', 1));
UPDATE table_name tn SET tn.name = 'John', tn.age = 25 WHERE (tn.id = 1)
Пример 2:
use DigitalStars\SimpleSQL\Update; use DigitalStars\SimpleSQL\Select; $select = Select::create() ->setSelect(['name', 'age', 'id']) ->setFrom('table_name_2'); $update = Update::create() ->setSet(['name' => '?s', 'age' => '?i'], ['John', 25]) ->setFrom('table_name') ->setWhere(Where::create('tn.id = ?i', 1)) ->setJoin(Join::inner(From::create($select, 'tn2'), 'tn2.tn2_id = tn.id'));
UPDATE table_name tn INNER JOIN (SELECT tn2.name AS tn2_name, tn2.age AS tn2_age, tn2.id AS tn2_id FROM table_name_2 tn2) tn2 on (tn2.tn2_id = tn.id) SET tn.name = 'John', tn.age = 25 WHERE (tn.id = 1)
DELETE запросы
Класс Delete представляет из себя конструктор запросов DELETE.
static create(): self
Статический метод, инициализация объекта Delete.
setFrom(string|Select|From $from = null, string $alias = null): self
Устанавливает таблицу, из которой будет производиться удаление.
getFrom(): From
Возвращает объект From, который был установлен в запросе.
getWhere(): Where
Возвращает объект Where, который был установлен в запросе. Отвечает за условие WHERE.
setWhere(Where $where = null): self
Устанавливает объект Where в запросе. Отвечает за условие WHERE.
getLimit(): ?int
Возвращает количество строк, которые будут удалены. В случае, если не установлено, то возвращает null.
setLimit(?int $limit = null): self
Устанавливает количество строк, которые будут удалены. Если не установлено, то удаляются все строки.
getSql(): string
Возвращает строку запроса, которая была сгенерирована и все заполнители заменены на значения.
getSqlRaw(): array
Метод используется для внутреннего взаимодействия внутри библиотеки. Но может быть полезен для отладки.
Возвращает массив:
- 'sql' => string - строка запроса, которая была сгенерирована, но заполнители не были заменены на значения.
- 'values' => array - массив значений для заполнителей.
Примеры использования:
Пример 1:
use DigitalStars\SimpleSQL\Delete; $delete = Delete::create() ->setFrom('table_name') ->setWhere(Where::create('id = ?i', 1)) ->setLimit(1);
DELETE FROM `table_name` WHERE (id = 1) LIMIT 1