Db Query
Описание
Конструктор SQL запросов
Настройка
Нет
Использование
Пример использования конструктора Select():
use \Bluz\Db\Query; /* @var \Bluz\Db $db */ $builder = new Query\Select(); $builder->select('u.*', 'g.name AS groupName') // SELECT u.*, g.name AS groupName ->from('users', 'u') // FROM users AS u ->join('u', 'group', 'g', 'g.id = u.id') // LEFT JOIN group AS g ON g.id = u.id ->where('u.status = ?', 'active') // u.status = 'active' ->andWhere('u.address IS NULL') // AND u.address IS NULL ->andWhere('u.role IN (?)', ['user', 'moderator']); // AND u.role IN ('user', 'moderator') ->andWhere('g.id = ? OR g.id = ?', 1, 2) // AND (g.id = 1 OR g.id = 2) ->andWhere('u.name LIKE (?)', 'A%') // AND u.name LIKE 'A%' ->orderBy('u.name', 'ASC') // ORDER BY u.name ASC ->limit(10) // LIMIT 10 OFFSET 0
Примеры: доступны в скелетоне в контроллере
/test/query
Список примесей trait по отношению к методам:
| select() | insert() | update() | delete()
select | x | | |
insert | | x | |
update | | | x |
delete | | | | x
from | x | | - | -
join | x | | - | -
where | x | | x | x
group | x | | |
having | x | | |
order | x | | | x
limit | x | | x | x
set | | x | x |
Методы
Следующие методы являются общими для всех конструкторов запросов:
-
execute()- сгенерировать и выполнить запрос -
getSql()- генерирует и возвращает SQL запрос -
getQuery()- генерирует и возвращает SQL запрос с подстановками, необходим для проверки результата -
setParam($key, $value, $type = \PDO::PARAM_STR)- устанавливает параметр для подстановки в запрос -
setParams(array $params, array $types = array())- устанавливает все параметры за раз (! вызов данного метода перетирает все параметры, которые были явно или неявно добавлены к запросу) -
getParam($key)- возвращает параметр из подстановки -
getParams()- возвращает все параметры из подстановки -
__toString()- вызываетgetSql()
Select
Конструктор запросов SELECT содержит следующие методы:
-
select($field [, $field[, $field .. ]])- перечисляем параметры, которые будут подставлены вSELECT $field, .. FROM .. -
addSelect($field [, $field[, $field .. ]])- метод аналогичный описанному выше, но дополняетselectчасть, а не замещает -
getSelect()- возвращает текущие настройкиselect -
from($table, $alias)- подстановка в.. FROM $table AS $alias .. -
join($fromAlias, $table, $alias, $condition)- подстановка в.. JOIN $table AS $alias ON $condition .. leftJoin($fromAlias, $table, $alias, $condition)rightJoin($fromAlias, $table, $alias, $condition)innerJoin($fromAlias, $table, $alias, $condition)-
where($condition [,$value [, $value ... ]])- устанавливает параметрыWHERE -
andWhere($condition [,$value [, $value ... ]])- добавляет условие вWHEREчерезAND -
orWhere($condition [,$value [, $value ... ]])- добавляет условие вWHEREчерезOR -
orderBy($field, $order = 'ASC')- устанавливает сортировку (перетирает предыдущую) -
addOrderBy($field, $order = 'ASC')- добавляет правило сортировки -
groupBy($field)- устанавливает группировку (перетирает предыдущую) -
addGroupBy($field)- добавляет группировку -
limit($limit, $offset = 0)- обёртка для формированияLIMIT 100 OFFSET 200 setLimit($limit)setOffset($offset)-
setPage($page)- обёртка для формированияLIMIT 100 OFFSET 200, для использования должен быть установлено ограничение с использованиемsetLimit($limit) -
havingBy($condition [,$value [, $value ... ]])- обёртка для формированияHAVING andHavingBy($condition [,$value [, $value ... ]])orHavingBy($condition [,$value [, $value ... ]])-
setFetchType($type)- установка формата возвращаемых данных, может быть\PDO::FETCH_CLASS,\PDO::FETCH_ASSOCили имя класса, к примеру\Application\Pages\Row, по умолчанию:\PDO::FETCH_ASSOC
Комплексный пример вы найдёте чуть выше.
Insert
Конструктор запросов INSERT, содержит следующие методы:
insert($table)set($key, $value)
Update
Конструктор запросов UPDATE, содержит следующие методы:
update($table)set($key, $value)-
where($condition [,$value [, $value ... ]])- устанавливает параметрыWHERE -
andWhere($condition [,$value [, $value ... ]])- добавляет условие черезAND -
orWhere($condition [,$value [, $value ... ]])- добавляет условие черезOR -
limit($limit, $offset = 0)- обёртка для формированияLIMIT 100 OFFSET 200 setLimit($limit)setOffset($offset)
DeleteBuilder
Конструктор запросов DELETE, содержит следующие методы:
delete($table)-
where($condition [,$value [, $value ... ]])- устанавливает параметрыWHERE -
andWhere($condition [,$value [, $value ... ]])- добавляет условие черезAND -
orWhere($condition [,$value [, $value ... ]])- добавляет условие черезOR -
limit($limit, $offset = 0)- обёртка для формированияLIMIT 100 setLimit($limit)-
setOffset($offset)- рудимент, в формировании запроса не участвует