-
Notifications
You must be signed in to change notification settings - Fork 11
cols
Формат указания столбца используется:
- При вставке столбца с помощью
?c
или?col
- Внутри некоторых форматов, таких, как
?set
- Внутри
?cols
см. ниже
Просто строка - имя столбца, экранируемого по правилам текущей базы.
$col = 'id';
$pattern = 'SELECT ?col FROM `table`';
$data = [$col];
SELECT `id` FROM `table`
Задаёт цепочку пути к столбцу, например, [$table, $col]
или [$db, $table, $col]
.
Либо в других базах могут быть другие компоненты (схема в Pg).
$col = ['db', 'table', 'col'];
$pattern = 'SELECT ?col FROM `table`';
$data = [$col];
SELECT `db`.`table`.`col` FROM `table`
Может содержать следующие поля:
-
col
(array|string) -
table
(array|string) -
db
(array|string) -
func
(string) -
as
(string) -
value
(string)
Должно быть, как минимум одно из следующих полей: col
, value
или func
.
col
- как и выше, либо непосредственно название столбца, либо массив компонентов.
table
и db
введены для большего удобства в некоторых случаях. Все эти компоненты сливаются в название столбца db+table+col
.
$col = [
'db' => 'dbname',
'table' => 'test',
'col' => 'id'
];
$pattern = 'SELECT ?col FROM `table`';
$data = [$col];
SELECT `dbname`.`test`.`id` FROM `table`
Либо, таблица содержится в отдельной переменной:
$table = ['dbname', 'test'];
$col = [
'table' => $table,
'col' => 'id'
];
$pattern = 'SELECT ?col FROM `table`';
$data = [$col];
Аналогично:
SELECT `dbname`.`test`.`id` FROM `table`
Накладываемая функция
$col = [
'col' => 'value',
'func' => 'SUM',
];
$pattern = 'SELECT ?col FROM `table`';
$data = [$col];
SELECT SUM(`value`) FROM `table`
Прибавляемое значение.
$col = [
'col' => 'value',
'value' => 1,
];
$pattern = 'UPDATE `t` SET `value`=?col';
$data = [$col];
UPDATE `t` SET `value`=`value`+1
Так использовать особенного смысла нет, используется внутри ?set.
Алиас:
$col = [
'col' => 'value',
'as' => 'new',
];
$pattern = 'SELECT ?c FROM `table`';
$data = [$col];
SELECT `value` AS `new` FROM `table`
$col = [
'func' => 'NOW',
];
$table->update(['x' => $col]);
UPDATE `table` SET `x`=NOW()
value
+ func
:
$col = [
'func' => 'COUNT',
'value' => 1,
];
$pattern = 'SELECT ?c FROM `table`';
SELECT COUNT(1) FROM `table`
Если value
нужны вынести за скобки, а функцию вызывать без аргументов, следует указать col=NULL
:
$col = [
'func' => 'NOW',
'col' => null,
'value' => 1,
];
$table->update(['x' => $col]);
UPDATE `table` SET `x`=NOW()+1
Если col=TRUE
, он заменяется на звёздочку.
$col = [
'func' => 'COUNT',
'value' => 2,
'col' => true,
'as' => 'c',
];
$pattern = 'SELECT ?c FROM `t`';
SELECT COUNT(*)+2 AS `c` FROM `t`
Алиас:
$col = [
'table' => 'test',
'col' => 'value',
'func' => 'COUNT',
'as' => 'q',
];
$pattern = 'SELECT ?c ...';
$data = [$col];
SELECT COUNT(`test`.`value`) AS `q` ...
Этот формат используется в плейсхолдере ?cols
и в методе select()
Table.
Просто массив столбцов, каждый из которых имеет описанный выше формат.
$cols = [
'id',
'name',
[
'col' => 'value',
'as' => 'new',
],
];
$pattern = 'SELECT ?cols ...';
$data = [$cols];
SELECT `id`,`name`,`value` AS `new` ...