Spec-Zone.ru › CakePHP 3.3

Класс QueryExpression

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

Cake\Database\Expression\QueryExpression реализует Cake\Database\ExpressionInterface, Countable использует Cake\Database\TypeMapTrait
Пространство имён: Cake\Database\Expression
Расположение: Database/Expression/QueryExpression.php

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

  • $_conditions protected
    array

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

  • $_conjunction protected
    string

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

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

  • _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, содержащий все переданные условия и устанавливает союз «И».

  • between() public

    Добавляет новое условие в объект выражения в виде «поле МЕЖДУ от И до».

  • count() public

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

  • eq() public
    Добавляет новое условие в объект выражения в виде «поле = значение».
  • equalFields() public
    Создаёт условие равенства или присваивание с обертыванием идентификатора.
  • exists() public
    Добавляет новое условие в объект выражения в виде «СУЩЕСТВУЕТ (...)».
  • gt() public
    Добавляет новое условие в объект выражения в виде «поле > значение».
  • gte() public
    Добавляет новое условие в объект выражения в виде «поле >= значение».
  • hasNestedExpression() public
    Возвращает true, если это выражение содержит другие вложенные объекты ExpressionInterface
  • in() public

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

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

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

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

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

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

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

  • sql() public

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

  • tieWith() public

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

  • traverse() public

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

  • type() public
    Обратная совместимая обертка для 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 необязательно []

ассоциативный массив значений, которые необходимо связать с условиями, переданными в $conditions. Если значений $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, как настроено с помощью type map.

Возвращает


$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, как настроено с помощью type map. Если оно заканчивается на "[]" и значение является массивом, то будет создано несколько заглушек, по одной на каждое значение в массиве.

Возвращает


$this

equalFields()source public

equalFields( string $left , string $right )

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

Параметры

строка $left
Левое поле условия соединения.
строка $right
Правое поле условия соединения.

Возвращает


$this

exists()source public

exists( Cake\Database\ExpressionInterface $query )

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

Параметры

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

Возвращаемое значение


$this

gt()source public

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

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

Параметры

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

Возвращаемое значение


$this

gte()source public

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

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

Параметры

строка|Cake\Database\ExpressionInterface $field
Базовое поле, которое сравнивается со значением
смешанное $value
Значение, которое будет привязано к $field для сравнения
строка|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 )

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

Параметры

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

Возвращаемое значение


$this

isCallable()source public

isCallable( callable $c )

Проверяет, является ли вызываемый объект допустимым.

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

Параметры

callable $c
Вызываемый объект для проверки.

Возвращаемое значение

boolean
Допустимый вызываемый объект.

isNotNull()source public

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

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

Параметры

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

базовое поле, проверяемое на не-NULL

Возвращаемое значение


$this

isNull()source public

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

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

Параметры

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

базовое поле, проверяемое на NULL

Возвращаемое значение


$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 значение".

Параметры

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

Возвращаемое значение


$this

lt()source public

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

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

Параметры

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

Возвращаемое значение


$this

lte()source public

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

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

Параметры

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

Возвращаемое значение


$this

not()source public

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

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

Параметры

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

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

Возвращаемое значение


$this

notEq()source public

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

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

Параметры

строка|Cake\Database\ExpressionInterface $field
Базовое поле, которое сравнивается со значением
смешанное $value
Значение, которое будет привязано к $field для сравнения
строка|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

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 )

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

Параметры

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

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

Возвращает

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

traverse()source public

traverse( callable $callable )

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

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

Параметры

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

Реализация

Cake\Database\ExpressionInterface::traverse()

type()source public

type( string|null $conjunction null )

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

Устарело

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

Параметры

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

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

Возвращает

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

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

defaultTypes()source public

defaultTypes( array $types null )

Позволяет устанавливать значения по умолчанию для типов при объединении запроса

Параметры

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

Возвращает


$this|массив

typeMap()source public

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

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

Параметры

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

Возвращает


$this|\Cake\Database\TypeMap

Подробности свойств

$_conditionssource

protected массив

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

[]

$_conjunctionsource

protected строка

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

© 2005–2017 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.3/class-Cake.Database.Expression.QueryExpression.html

Spec-Zone.ru

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