Spec-Zone.ru › CakePHP 3.4

Класс 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

    Строка, используемая для соединения каждого из внутренних выражений, которые хранятся этим объектом, например, "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

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

  • count() public

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

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

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

  • in() public

    Добавляет новое условие в объект выражения в виде «поле В (значение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
    Добавляет новое условие в объект выражения в форме «НЕ СУЩЕСТВУЕТ (...)».
  • notIn() public

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

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

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

  • setConjunction() public
    Изменяет сопряжение для условий на этом уровне дерева выражений.
  • 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\ExpressionInterface $conditions [] , array|Cake\Database\TypeMap $types [] , string $conjunction 'AND' )

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

Параметры

string|array|Cake\Database\ExpressionInterface $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\IdentifierExpression $field )

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

Параметры

string|Cake\Database\Expression\IdentifierExpression $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\ExpressionInterface $conditions , array $types [] )

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

Параметры

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

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

Возвращает

Cake\Database\Expression\QueryExpression

between()source public

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

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

Параметры

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

Возвращает


$this

count()source public

count( )

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

Возвращает

integer

Реализация

Countable::count()

eq()source public

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

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

Параметры

string|Cake\Database\ExpressionInterface $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 )

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

Параметры

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 optional 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 optional 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 optional 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

Базовое поле, которое проверяется на пустое значение

Возвращает


$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 optional 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 optional 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 optional null
имя типа для $value, как настроено с помощью Type map.

Возвращает


$this

not()source public

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

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

Параметры

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

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

Возвращает


$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 optional null

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

Возвращает


$this

notExists()source public

notExists( Cake\Database\ExpressionInterface $query )

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

Параметры

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)".

Параметры

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

Возвращает


$this

notLike()source public

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

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

Параметры

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

Возвращает


$this

or_()source public

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

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

Параметры

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

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

Возвращает

Cake\Database\Expression\QueryExpression

setConjunction()source public

setConjunction( string $conjunction )

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

Параметры

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

Возвращает


$this

sql()source public

sql( Cake\Database\ValueBinder $generator )

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

Параметры

Cake\Database\ValueBinder $generator
Объект генератора заглушек

Возвращает

string

Реализация

Cake\Database\ExpressionInterface::sql()

tieWith()source public

tieWith( string|null $conjunction null )

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

Устаревшее

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

Параметры

string|null $conjunction необязательно null

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

Возвращает

string|Cake\Database\Expression\QueryExpression
$this

traverse()source public

traverse( callable $callable )

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

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

Параметры

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

Реализация

Cake\Database\ExpressionInterface::traverse()

type()source public

type( string|null $conjunction null )

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

Устаревшее

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

Параметры

string|null $conjunction необязательно null

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

Возвращает

string|Cake\Database\Expression\QueryExpression
$this

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

defaultTypes()source public

defaultTypes( array $types null )

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

Устаревшее

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

Параметры

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

Возвращает


$this|array

getDefaultTypes()source public

getDefaultTypes( )

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

Возвращает

array

getTypeMap()source public

getTypeMap( )

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

Возвращает

Cake\Database\TypeMap

setDefaultTypes()source public

setDefaultTypes( array $types )

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

Параметры

array $types
Массив типов для задания.

Возвращает


$this

setTypeMap()source public

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

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

Параметры

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

Возвращает


$this

typeMap()source public

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

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

Устаревшее

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

Параметры

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

Возвращает


$this|\Cake\Database\TypeMap

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

$_conditionssource

protected array

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

[]

$_conjunctionsource

protected string

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

© 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.4/class-Cake.Database.Expression.QueryExpression.html

Spec-Zone.ru

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