Spec-Zone.ru › CakePHP 3.6

Класс QueryExpression

Представляет выражение SQL-запроса. Внутренне он хранит дерево выражений, которое можно скомпилировать, преобразовав этот объект в строку, и которая будет содержать правильно скобочное и вложенное выражение.

Cake\Database\Expression\QueryExpression реализует Cake\Database\ExpressionInterface, Countable использует Cake\Database\TypeMapTrait

Непосредственные подклассы

  • Cake\Database\Expression\FunctionExpression
  • Cake\Database\Expression\OrderByExpression
Пространство имён: Cake\Database\Expression
Расположение: Database/Expression/QueryExpression.php

Краткое описание свойств

  • $_conditions protected
    array

    Список строк или других объектов выражений, представляющих «ветви» дерева выражений. Например, один ключ массива может выглядеть так: "sum > :value"

  • $_conjunction protected
    string

    Строка, используемая для объединения каждого из внутренних выражений, хранящихся в этом объекте, например, «И», «ИЛИ» и т. д.

Унаследованные свойства

  • _typeMap

Краткое описание методов

  • __call() public
    Помогает прозрачно вызывать методы and() и or().
  • __clone() public
    Клонирует этот объект и его поддерево выражений.
  • __construct() public

    Конструктор. Новый объект выражения может быть создан без параметров и динамически построен. В противном случае можно передать массив условий, содержащий либо древовидную структуру массива для парсинга, либо другие объекты выражений. Дополнительно можно задать ключевое слово союза, используемое для объединения каждой части дерева выражения на этом уровне.

  • _addConditions() protected

    Вспомогательная функция, используемая для разложения вложенного массива условий и построения древовидной структуры внутри этого объекта для представления полного SQL-выражения. Строковые условия хранятся непосредственно в условиях, а любые другие представления обертываются соответствующим экземпляром или этого класса.

  • _calculateType() protected
    Возвращает имя типа для переданного поля, если оно было сохранено в typeMap.
  • _parseCondition() protected

    Парсит строковые условия, пытаясь извлечь оператор, если он есть, и, наконец, возвращает либо соответствующий объект QueryExpression, либо просто строковое представление условия. Эта функция отвечает за генерацию заготовок и замену значений ими, сохраняя значение в другом месте для последующей привязки.

  • add() public

    Добавляет одно или несколько условий к этому объекту выражения. Условия могут быть выражены в одномерном массиве, что приведет к добавлению всех условий непосредственно на этом уровне дерева, или они могут быть произвольно вложены, что приведет к созданию дополнительных объектов выражений, которые будут вложены внутрь и настроены на использование указанного союза.

  • addCase() public
    Добавляет новое выражение case в объект выражения.
  • and_() public

    Возвращает новый объект QueryExpression, содержащий все переданные условия и устанавливает союз на «AND».

  • between() public

    Добавляет новое условие в объект выражения в виде «поле BETWEEN от AND до».

  • count() public

    Возвращает количество внутренних условий, хранящихся в этом выражении. Полезно для определения, является ли этот объект выражения пустым или он сгенерирует непустую строку при компиляции.

  • eq() public
    Добавляет новое условие в объект выражения в виде «поле = значение».
  • equalFields() public
    Строит условие равенства или присвоения с оболочкой идентификатора.
  • exists() public
    Добавляет новое условие в объект выражения в виде «EXISTS (...)».
  • getConjunction() public
    Получает текущий конъюнктивный союз для условий на этом уровне дерева выражений.
  • gt() public
    Добавляет новое условие в объект выражения в виде «поле > значение».
  • gte() public
    Добавляет новое условие в объект выражения в виде «поле >= значение».
  • hasNestedExpression() public

    Возвращает true, если это выражение содержит другие вложенные объекты ExpressionInterface.

  • in() public

    Добавляет новое условие в объект выражения в виде «поле IN (значение1, значение2)».

  • isCallable() public
    Проверяет, является ли вызываемый объект допустимым.
  • isNotNull() public
    Добавляет новое условие в объект выражения в виде «поле НЕ NULL».
  • isNull() public
    Добавляет новое условие в объект выражения в виде «поле IS NULL».
  • iterateParts() public
    Выполняет вызываемую функцию для каждой из частей, составляющих это выражение.
  • like() public
    Добавляет новое условие в объект выражения в виде «поле LIKE значение».
  • lt() public
    Добавляет новое условие в объект выражения в виде «поле < значение».
  • lte() public
    Добавляет новое условие в объект выражения в виде «поле <= значение».
  • not() public

    Добавляет новый набор условий на этот уровень дерева и инвертирует конечный результат, добавив NOT, он будет выглядеть как «НЕ ( (условие1) И (условия2) )» — союз зависит от текущего, настроенного для этого объекта.

  • notEq() public
    Добавляет новое условие в объект выражения в виде «поле != значение».
  • notExists() public
    Добавляет новое условие в объект выражения в виде «НЕ EXISTS (...)».
  • notIn() public

    Добавляет новое условие в объект выражения в виде «поле НЕ IN (значение1, значение2)».

  • notLike() public
    Добавляет новое условие в объект выражения в виде «поле НЕ LIKE значение».
  • or_() public

    Возвращает новый объект QueryExpression, содержащий все переданные условия и устанавливает союз на «ИЛИ».

  • setConjunction() public
    Изменяет конъюнкцию для условий на данном уровне дерева выражений.
  • sql() public

    Возвращает строковое представление этого объекта, чтобы его можно было использовать в SQL-запросе. Обратите внимание, что значения условий не включены в строку, вместо них используются заготовки, которые можно заменить соответствующими значениями в кавычках.

  • tieWith() public deprecated

    Изменяет конъюнкцию для условий на этом уровне дерева выражений. Если вызвать без аргументов, вернёт текущее значение.

  • traverse() public

    Обходит древовидную структуру этого выражения запроса, вызывая функцию обратного вызова для каждого из условий, включенных в этот объект. Полезно для компиляции конечного выражения или интроспекции структуры.

  • type() public deprecated
    Обратный совместимый обёртку для tieWith()

Подробное описание метода

__call()source public

__call( string $method , array $args )

Помогает прозрачно вызывать методы and() и or().

Параметры

строка $method
Имя метода.
массив $args
Аргументы для передачи методу.

Возвращает

Cake\Database\Expression\QueryExpression

Выбрасывает

BadMethodCallException

__clone()source public

__clone( )

Клонирует этот объект и его поддерево выражений.

__construct()source public

__construct( string|array|Cake\Database\ExpressionInterface $conditions = [] , array|Cake\Database\TypeMap $types = [] , string $conjunction = 'AND' )

Конструктор. Новый объект выражения может быть создан без параметров и динамически построен. В противном случае можно передать массив условий, содержащий либо древовидную структуру массива для парсинга, либо другие объекты выражений. Дополнительно можно установить ключевое слово союза для объединения каждой части дерева выражения на этом уровне.

Параметры

строка|массив|Cake\Database\ExpressionInterface $conditions необязательно []

древовидная структура массива, содержащая все условия, которые нужно добавить или вложить внутрь этого объекта выражения.

массив|Cake\Database\TypeMap $types необязательно []

ассоциативный массив типов, которые нужно сопоставить со значениями, переданными в $conditions.

строка $conjunction необязательно 'AND'

соединитель, который будет объединять все строковые условия на этом уровне дерева выражения. Например, "AND", "OR", "XOR"...

См. также

\Cake\Database\Expression\QueryExpression::add() для получения более подробной информации о $conditions и $types

_addConditions()source protected

_addConditions( array $conditions , array $types )

Вспомогательная функция, используемая для разложения вложенного массива условий и построения древовидной структуры внутри этого объекта для представления полного выражения SQL. Строковые условия хранятся непосредственно в условиях, а любой другой вид представления обертывается соответствующим экземпляром или этого класса.

Параметры

массив $conditions
список условий, которые нужно сохранить в этом объекте
массив $types
список типов, связанных с полями, на которые ссылаются в $conditions

_calculateType()source protected

_calculateType( string|Cake\Database\Expression\IdentifierExpression $field )

Возвращает имя типа для переданного поля, если оно было сохранено в typeMap

Параметры

строка|Cake\Database\Expression\IdentifierExpression $field
Имя поля, для которого требуется получить тип.

Возвращает

строка|null
Вычисленный тип или null, если тип неизвестен.

_parseCondition()source protected

_parseCondition( string $field , mixed $value )

Парсит строковые условия, пытаясь извлечь оператор, если он есть, и, наконец, возвращает либо соответствующий объект QueryExpression, либо просто строковое представление условия. Эта функция отвечает за генерацию заготовок и замену значений на них, при этом значение хранится где-то еще для последующей привязки.

Параметры

строка $field

Значение, из которого будет извлечено фактическое поле и оператор.

смешанный $value
Значение, которое нужно привязать к заготовке для поля

Возвращает

строка|Cake\Database\ExpressionInterface

add()source public

add( string|array|Cake\Database\ExpressionInterface $conditions , array $types = [] )

Добавляет одно или несколько условий в этот объект выражения. Условия могут быть выражены в одномерном массиве, что приведет к непосредственному добавлению всех условий на этом уровне дерева, или они могут быть вложены произвольно, что приведет к созданию большего количества объектов выражений, которые будут вложены внутрь и сконфигурированы для использования указанного союза.

Если тип, переданный для любого из полей, выражается как "type[]" (обратите внимание на фигурные скобки), то это приведет к динамической переработке заготовки, так что если значение является массивом, то будет создано столько заготовок, сколько значений в нем.

Параметры

строка|массив|Cake\Database\ExpressionInterface $conditions

одно или несколько условий для добавления. При использовании массива и ключевого слова 'OR' или 'AND' будет создан новый объект выражения с этим союзом и внутренним значением массива, переданным как условия.

массив $types необязательно []

ассоциативный массив полей, указывающих на тип передаваемых значений. Используется для правильной привязки значений к операторам.

Возвращает


$this

См. также

\Cake\Database\Query::where() для примеров условий

addCase()source public

addCase( array|Cake\Database\ExpressionInterface $conditions , array|Cake\Database\ExpressionInterface $values = [] , array $types = [] )

Добавляет новое выражение case в объект выражения

Параметры

массив|Cake\Database\ExpressionInterface $conditions

Условия для проверки. Должен быть экземпляр ExpressionInterface или массив экземпляров ExpressionInterface.

массив|Cake\Database\ExpressionInterface $values необязательно []

ассоциативный массив значений, которые нужно сопоставить с переданными условиями. Если значений $values больше, чем условий $conditions, то последнее значение $value используется как значение ELSE

массив $types необязательно []

ассоциативный массив типов, которые нужно сопоставить со значениями, переданными в $values

Возвращает


$this

and_()source public

and_( string|array|Cake\Database\ExpressionInterface $conditions , array $types = [] )

Возвращает новый объект QueryExpression, содержащий все переданные условия и настраивает союз на "AND"

Параметры

строка|массив|Cake\Database\ExpressionInterface $conditions
для объединения с AND
массив $types необязательно []

ассоциативный массив полей, указывающих на тип передаваемых значений. Используется для правильной привязки значений к операторам.

Возвращает

Cake\Database\Expression\QueryExpression

between()source public

between( string|Cake\Database\ExpressionInterface $field , mixed $from , mixed $to , string|null $type = null )

Добавляет новое условие в объект выражения в виде "поле BETWEEN от И до".

Параметры

строка|Cake\Database\ExpressionInterface $field
Имя поля для сравнения значений в диапазоне.
смешанный $from
Начальное значение диапазона.
смешанный $to
Конечное значение в диапазоне сравнения.
строка|null $type необязательно null
имя типа для $value, настроенное с помощью карты типов.

Возвращает


$this

count()source public

count( )

Возвращает количество внутренних условий, которые хранятся в этом выражении. Полезно определить, является ли этот объект выражения пустым или он сгенерирует непустую строку при компиляции

Возвращает

целое число

Реализация

Countable::count()

eq()source public

eq( string|Cake\Database\ExpressionInterface $field , mixed $value , string|null $type = null )

Добавляет новое условие в объект выражения в форме "поле = значение".

Параметры

строка|Cake\Database\ExpressionInterface $field
Базовое поле, которое сравнивается со значением
смешанный $value
Значение, которое нужно привязать к $field для сравнения
строка|null $type необязательно null

имя типа для $value, настроенное с помощью карты типов. Если оно заканчивается на "[]" и значение является массивом, то будет создано несколько заготовок, по одной на каждое значение в массиве.

Возвращает


$this

equalFields()source public

equalFields( string $left , string $right )

Создает условие равенства или присваивание с оберткой идентификатора.

Параметры

строка $left
Имя поля условия левого соединения.
строка $right
Имя поля условия правого соединения.

Возвращает


$this

exists()source public

exists( Cake\Database\ExpressionInterface $query )

Добавляет новое условие в объект выражения в форме "EXISTS (...)".

Параметры

Cake\Database\ExpressionInterface $query
внутренний запрос

Возвращает


$this
END_OF_DOCUMENT_MARKER

getConjunction()source public

getConjunction( )

Получает текущую конъюнкцию, настроенную для условий на данном уровне дерева выражений.

Возвращает

string

gt()source public

gt( string|Cake\Database\ExpressionInterface $field , mixed $value , string|null $type = null )

Добавляет новое условие в объект выражения в виде "поле > значение".

Параметры

string|Cake\Database\ExpressionInterface $field
Базовое поле, которое сравнивается со значением
mixed $value
Значение, которое будет привязано к $field для сравнения
string|null $type необязательно null
Имя типа для $value, как настроено в Type map.

Возвращает


$this

gte()source public

gte( string|Cake\Database\ExpressionInterface $field , mixed $value , string|null $type = null )

Добавляет новое условие в объект выражения в виде "поле >= значение".

Параметры

string|Cake\Database\ExpressionInterface $field
Базовое поле, которое сравнивается со значением
mixed $value
Значение, которое будет привязано к $field для сравнения
string|null $type необязательно null
Имя типа для $value, как настроено в Type map.

Возвращает


$this

hasNestedExpression()source public

hasNestedExpression( )

Возвращает true, если это выражение содержит другие вложенные объекты ExpressionInterface.

Возвращает

boolean

in()source public

in( string|Cake\Database\ExpressionInterface $field , string|array $values , string|null $type = null )

Добавляет новое условие в объект выражения в виде "поле IN (значение1, значение2)".

Параметры

string|Cake\Database\ExpressionInterface $field
Базовое поле, которое сравнивается со значением
string|array $values
значение, которое будет привязано к $field для сравнения
string|null $type необязательно null
Имя типа для $value, как настроено в Type map.

Возвращает


$this

isCallable()source public

isCallable( callable $c )

Проверяет, является ли вызов допустимым.

Мы не принимаем обратные вызовы типа ['класс', 'метод'], так как они часто содержат пользовательский ввод, а массивы строк легко подменить.

Параметры

callable $c
Вызов для проверки.

Возвращает

boolean
Допустимый вызов.

isNotNull()source public

isNotNull( string|Cake\Database\ExpressionInterface $field )

Добавляет новое условие в объект выражения в виде "поле IS NOT NULL".

Параметры

string|Cake\Database\ExpressionInterface $field

базовое поле, которое проверяется на непустоту

Возвращает


$this

isNull()source public

isNull( string|Cake\Database\ExpressionInterface $field )

Добавляет новое условие в объект выражения в виде "поле IS NULL".

Параметры

string|Cake\Database\ExpressionInterface $field

базовое поле, которое проверяется на пустоту

Возвращает


$this

iterateParts()source public

iterateParts( callable $callable )

Выполняет функцию обратного вызова для каждой части, составляющей это выражение.

Функция обратного вызова должна возвращать значение, которое будет использовано для замены текущей посещаемой части. Если функция обратного вызова возвращает null, то часть будет полностью удалена из этого выражения.

Функция обратного вызова будет получать каждое из условий в качестве первого параметра и ключ как второй. Можно объявить второй параметр как передаваемый по ссылке, это позволит изменить ключ, под которым хранится измененная часть.

Параметры

callable $callable
Функция обратного вызова, которую нужно применить к каждой части.

Возвращает


$this

like()source public

like( string|Cake\Database\ExpressionInterface $field , mixed $value , string|null $type = null )

Добавляет новое условие в объект выражения в виде "поле LIKE значение".

Параметры

string|Cake\Database\ExpressionInterface $field
Базовое поле, которое сравнивается со значением
mixed $value
Значение, которое будет привязано к $field для сравнения
string|null $type необязательно null
Имя типа для $value, как настроено в Type map.

Возвращает


$this

lt()source public

lt( string|Cake\Database\ExpressionInterface $field , mixed $value , string|null $type = null )

Добавляет новое условие в объект выражения в виде "поле < значение".

Параметры

string|Cake\Database\ExpressionInterface $field
Базовое поле, которое сравнивается со значением
mixed $value
Значение, которое будет привязано к $field для сравнения
string|null $type необязательно null
Имя типа для $value, как настроено в Type map.

Возвращает


$this

lte()source public

lte( string|Cake\Database\ExpressionInterface $field , mixed $value , string|null $type = null )

Добавляет новое условие в объект выражения в виде "поле <= значение".

Параметры

string|Cake\Database\ExpressionInterface $field
Базовое поле, которое сравнивается со значением
mixed $value
Значение, которое будет привязано к $field для сравнения
string|null $type необязательно null
Имя типа для $value, как настроено в Type map.

Возвращает


$this

not()source public

not( string|array|Cake\Database\ExpressionInterface $conditions , array $types = [] )

Добавляет новый набор условий на данном уровне дерева и инвертирует окончательный результат, добавляя NOT, это будет выглядеть как "НЕ ( (условие1) И (условия2) )" конъюнкция зависит от текущей, настроенной для этого объекта.

Параметры

string|array|Cake\Database\ExpressionInterface $conditions
для добавления и инвертирования
array $types необязательно []

ассоциативный массив полей, указывающих на тип передаваемых значений. Используется для правильной привязки значений к операторам.

Возвращает


$this

notEq()source public

notEq( string|Cake\Database\ExpressionInterface $field , mixed $value , string|null $type = null )

Добавляет новое условие в объект выражения в виде "поле != значение".

Параметры

string|Cake\Database\ExpressionInterface $field
Базовое поле, которое сравнивается со значением
mixed $value
Значение, которое будет привязано к $field для сравнения
string|null $type необязательно null

Имя типа для $value, как настроено в Type map. Если оно заканчивается на "[]" и значение является массивом, то будут созданы несколько заменителей, по одному на каждое значение в массиве.

Возвращает


$this

notExists()source public

notExists( Cake\Database\ExpressionInterface $query )

Добавляет новое условие в объект выражения в виде "НЕ СУЩЕСТВУЕТ (...)".

Параметры

Cake\Database\ExpressionInterface $query
внутренний запрос

Возвращает


$this
END_OF_DOCUMENT_MARKER

notIn()source public

notIn( string|Cake\Database\ExpressionInterface $field , array $values , string|null $type = null )

Добавляет новое условие к объекту выражения в формате «поле НЕ В (значение1, значение2)».

Параметры

строка|Cake\Database\ExpressionInterface $field
Поле базы данных, сравниваемое со значением
массив $values
значение, которое будет привязано к $field для сравнения
строка|null $type необязательно null
имя типа для $value, как настроено с помощью карты типов.

Возвращает


$this

notLike()source public

notLike( string|Cake\Database\ExpressionInterface $field , mixed $value , string|null $type = null )

Добавляет новое условие к объекту выражения в формате «поле НЕ ПОДОБНО значение».

Параметры

строка|Cake\Database\ExpressionInterface $field
Поле базы данных, сравниваемое со значением
смешанное $value
Значение, которое будет привязано к $field для сравнения
строка|null $type необязательно null
имя типа для $value, как настроено с помощью карты типов.

Возвращает


$this

or_()source public

or_( string|array|Cake\Database\ExpressionInterface $conditions , array $types = [] )

Возвращает новый объект QueryExpression, содержащий все переданные условия и устанавливает сопряжение на «ИЛИ»

Параметры

строка|массив|Cake\Database\ExpressionInterface $conditions
для объединения с ИЛИ
массив $types необязательно []

ассоциативный массив полей, указывающий на тип значений, которые передаются. Используется для правильной привязки значений к операторам.

Возвращает

Cake\Database\Expression\QueryExpression

setConjunction()source public

setConjunction( string $conjunction )

Изменяет сопряжение для условий на данном уровне дерева выражений.

Параметры

строка $conjunction
Значение, используемое для объединения условий

Возвращает


$this

sql()source public

sql( Cake\Database\ValueBinder $generator )

Возвращает строковое представление этого объекта, чтобы его можно было использовать в запросе SQL. Обратите внимание, что значения условий не включаются в строку; вместо них ставятся заполнитель, которые можно заменить соответствующими значениями в кавычках.

Параметры

Cake\Database\ValueBinder $generator
Объект генератора заполнителей

Возвращает

строка

Реализация

Cake\Database\ExpressionInterface::sql()

tieWith()source public устарело

tieWith( string|null $conjunction = null )

Изменяет сопряжение для условий на данном уровне дерева выражений. Если вызвано без аргументов, вернёт текущее значение.

Устарело

3.4.0 Используйте setConjunction()/getConjunction() вместо этого.

Параметры

строка|null $conjunction необязательно null

значение, используемое для объединения условий. Если null, не устанавливает значение, а возвращает хранящееся текущее

Возвращает

строка|Cake\Database\Expression\QueryExpression
$this

traverse()source public

traverse( callable $callable )

Проходит по структуре дерева этого выражения запроса, выполняя функцию обратного вызова для каждого из условий, включённых в этот объект. Полезно для компиляции конечного выражения или интроспекции структуры.

Функция обратного вызова получает в качестве единственного аргумента экземпляр ExpressionInterface

Параметры

вызываемая функция $callable
Вызываемая функция, применяемая ко всем подвыражениям.

Реализация

Cake\Database\ExpressionInterface::traverse()

type()source public устарело

type( string|null $conjunction = null )

Обратная совместимость обёртки для tieWith()

Устарело

3.2.0 Используйте setConjunction()/getConjunction() вместо этого

Параметры

строка|null $conjunction необязательно null

значение, используемое для объединения условий. Если null, не устанавливает значение, а возвращает хранящееся текущее

Возвращает

строка|Cake\Database\Expression\QueryExpression
$this

Методы, используемые из Cake\Database\TypeMapTrait

defaultTypes()source public устарело

defaultTypes( array $types = null )

Разрешает устанавливать типы по умолчанию при цепочечном запросе

Устарело

3.4.0 Используйте setDefaultTypes()/getDefaultTypes() вместо этого.

Параметры

массив $types необязательно null
Массив типов для установки.

Возвращает


$this|массив

getDefaultTypes()source public

getDefaultTypes( )

Получает типы по умолчанию текущей карты типов.

Возвращает

массив

getTypeMap()source public

getTypeMap( )

Возвращает существующую карту типов.

Возвращает

Cake\Database\TypeMap

setDefaultTypes()source public

setDefaultTypes( array $types )

Разрешает устанавливать типы по умолчанию при цепочечном запросе.

Параметры

массив $types
Массив типов для установки.

Возвращает


$this

setTypeMap()source public

setTypeMap( array|Cake\Database\TypeMap $typeMap )

Создаёт новую карту типов, если $typeMap является массивом, иначе меняет её на заданную.

Параметры

массив|Cake\Database\TypeMap $typeMap
Создаёт карту типов, если массив, иначе устанавливает заданную карту типов

Возвращает


$this

typeMap()source public устарело

typeMap( array|Cake\Database\TypeMap|null $typeMap = null )

Создаёт новую карту типов, если $typeMap является массивом, иначе возвращает существующую карту типов или меняет её на заданную.

Устарело

3.4.0 Используйте setTypeMap()/getTypeMap() вместо этого.

Параметры

массив|Cake\Database\TypeMap|null $typeMap необязательно null
Создаёт карту типов, если массив, иначе устанавливает заданную карту типов

Возвращает


$this|\Cake\Database\TypeMap

Подробное описание свойств

$_conditionssource

protected массив

Список строк или других объектов выражений, представляющих «ветви» дерева выражений. Например, один ключ массива может выглядеть как «сумма > :значение»

[]

$_conjunctionsource

protected строка

Строка, используемая для объединения каждого из внутренних выражений, которые этот объект хранит внутри, например, «И», «ИЛИ» и т. д.

© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/3.6/class-Cake.Database.Expression.QueryExpression.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API