-
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` ...