Spec-Zone.ru › CakePHP 3.2

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

  • between() public

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

  • count() public

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

  • eq() public
    Добавляет новое условие в объект выражения в виде «поле = значение».
  • equalFields() public
    Строит условие равенства или присвоения с идентификатором обертки.
  • exists() 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

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

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

    Добавляет новое условие в объект выражения в виде «поле НЕ IN (значение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().

Параметры

string $method
Имя метода.
array $args
Аргументы, которые нужно передать методу.

Возвращает

Cake\Database\Expression\QueryExpression

Выбрасывает

BadMethodCallException

__clone()source public

__clone( )

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

__construct()source public

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

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

Параметры

string|array|Cake\Database\Expression\QueryExpression $conditions необязательно []

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

array|Cake\Database\TypeMap $types необязательно []

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

string $conjunction необязательно 'AND'

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

См. также

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

_addConditions()source protected

_addConditions( array $conditions , array $types )

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

Параметры

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

_calculateType()source protected

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

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

Параметры

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

Возвращает

string|null
Вычисленный тип или null, если тип неизвестен.

_parseCondition()source protected

_parseCondition( string $field , mixed $value )

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

Параметры

string $field

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

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

Возвращает

string|Cake\Database\ExpressionInterface

add()source public

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

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

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

Параметры

string|array|Cake\Database\ExpressionInterface $conditions

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

array $types необязательно []

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

Возвращает


$this

См. также

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

addCase()source public

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

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

Параметры

array|Cake\Database\ExpressionInterface $conditions

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

array|Cake\Database\ExpressionInterface $values необязательно []

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

array $types необязательно []

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

Возвращает


$this

and_()source public

and_( string|array|Cake\Database\Expression\QueryExpression $conditions , array $types [] )

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

Параметры

string|array|Cake\Database\Expression\QueryExpression $conditions
для объединения с AND
array $types необязательно []

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

Возвращает

Cake\Database\Expression\QueryExpression

between()source public

between( mixed $field , mixed $from , mixed $to , string|null $type null )

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

Параметры

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

Возвращает


$this

count()source public

count( )

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

Возвращает

integer

Реализация

Countable::count()

eq()source public

eq( string $field , mixed $value , string|null $type null )

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

Параметры

string $field
Базовое поле, которое сравнивается со значением.
mixed $value
Значение, которое должно быть привязано к $field для сравнения.
string|null $type необязательно null

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

Возвращает


$this

equalFields()source public

equalFields( string $left , string $right )

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

Параметры

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

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


$this

exists()source public

exists( Cake\Database\ExpressionInterface $query )

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

Параметры

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

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


$this

gt()source public

gt( string $field , mixed $value , string|null $type null )

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

Параметры

string $field
Поле базы данных, сравниваемое со значением
mixed $value
Значение, которое будет привязано к $field для сравнения
string|null $type необязательно null
имя типа для $value, как настроено в Type map.

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


$this

gte()source public

gte( string $field , mixed $value , string|null $type null )

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

Параметры

string $field
Поле базы данных, сравниваемое со значением
mixed $value
Значение, которое будет привязано к $field для сравнения
string|null $type необязательно null
имя типа для $value, как настроено в Type map.

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


$this

hasNestedExpression()source public

hasNestedExpression( )

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

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

boolean

in()source public

in( string $field , string|array $values , string|null $type null )

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

Параметры

string $field
Поле базы данных, сравниваемое со значением
string|array $values
значение, которое будет привязано к $field для сравнения
string|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 )

Добавляет новое условие в объект выражения в форме "поле 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

поле базы данных, проверяемое на null

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


$this

iterateParts()source public

iterateParts( callable $callable )

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

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

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

Параметры

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

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


$this

like()source public

like( string $field , mixed $value , string|null $type null )

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

Параметры

string $field
Поле базы данных, сравниваемое со значением
mixed $value
Значение, которое будет привязано к $field для сравнения
string|null $type необязательно null
имя типа для $value, как настроено в Type map.

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


$this

lt()source public

lt( string $field , mixed $value , string|null $type null )

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

Параметры

string $field
Поле базы данных, сравниваемое со значением
mixed $value
Значение, которое будет привязано к $field для сравнения
string|null $type необязательно null
имя типа для $value, как настроено в Type map.

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


$this

lte()source public

lte( string $field , mixed $value , string|null $type null )

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

Параметры

string $field
Поле базы данных, сравниваемое со значением
mixed $value
Значение, которое будет привязано к $field для сравнения
string|null $type необязательно null
имя типа для $value, как настроено в Type map.

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


$this

not()source public

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

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

Параметры

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

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

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


$this

notEq()source public

notEq( string $field , mixed $value , string|null $type null )

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

Параметры

string $field
Поле базы данных, сравниваемое со значением
mixed $value
Значение, которое будет привязано к $field для сравнения
string|null $type необязательно null

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

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


$this
END_OF_DOCUMENT_MARKER

notExists()source public

notExists( Cake\Database\ExpressionInterface $query )

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

Параметры

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

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


$this

notIn()source public

notIn( string $field , array $values , string|null $type null )

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

Параметры

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

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


$this

notLike()source public

notLike( string $field , mixed $value , string|null $type null )

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

Параметры

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

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


$this

or_()source public

or_( string|array|Cake\Database\Expression\QueryExpression $conditions , array $types [] )

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

Параметры

строка|массив|Cake\Database\Expression\QueryExpression $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 — массив, иначе возвращает существующую карту типов или меняет её на заданную.

Параметры

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

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


$this|\Cake\Database\TypeMap

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

$_conditionssource

protected массив

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

[]

$_conjunctionsource

protected строка

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

© 2005–2016 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.
http://api.cakephp.org/3.2/class-Cake.Database.Expression.QueryExpression.html

Spec-Zone.ru

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