Skip to content
Anton edited this page Nov 15, 2017 · 8 revisions

Описание

Конструктор 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) - рудимент, в формировании запроса не участвует
Clone this wiki locally