Класс QueryExpression
Представляет выражение SQL запроса. Внутренне хранит дерево выражений, которое можно скомпилировать, преобразовав этот объект в строку, которая будет содержать правильно скобочное и вложенное выражение.
- Cake\Database\Expression\QueryExpression реализует Cake\Database\ExpressionInterface, Countable использует Cake\Database\TypeMapTrait
Непосредственные подклассы
Краткое описание свойств
-
$_conditionsprotectedarrayСписок строк или других объектов выражений, представляющих «ветви» дерева выражений. Например, один ключ массива может выглядеть как "sum > :value"
-
$_conjunctionprotectedstringСтрока, используемая для соединения каждого из внутренних выражений, которые хранятся этим объектом, например, "AND", "OR" и т.д.
Унаследованные свойства
Краткое описание методов
- __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__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\ExpressionInterfaceadd()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\QueryExpressionbetween()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
getConjunction()source public
getConjunction( )
Получает текущую конъюнкцию, настроенную для условий на данном уровне дерева выражения.
Возвращает
stringgt()source public
gt( string|Cake\Database\ExpressionInterface $field , mixed $value , string|null $type null )
Добавляет новое условие к объекту выражения в форме "поле > значение".
Параметры
- string|
Cake\Database\ExpressionInterface$field - Базовое поле, сравниваемое со значением
- mixed
$value - Значение, которое должно быть связано с $field для сравнения
- string|null
$typeoptional 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
$typeoptional null - имя типа для $value, как настроено с помощью Type map.
Возвращает
$this
hasNestedExpression()source public
hasNestedExpression( )
Возвращает true, если данное выражение содержит вложенные объекты ExpressionInterface.
Возвращает
booleanin()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
$typeoptional 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
$typeoptional 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
$typeoptional 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
$typeoptional 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
$typesoptional [] ассоциативный массив полей, указывающий на тип передаваемых значений. Используется для правильной привязки значений к операторам.
Возвращает
$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
$typeoptional null имя типа для $value, как настроено с помощью Type map. Если оно заканчивается на "[]" и значение является массивом, то будет создано несколько плацехолдеров, по одному на каждое значение в массиве.
Возвращает
$this
notExists()source public
notExists( Cake\Database\ExpressionInterface $query )
Добавляет новое условие к объекту выражения в форме "NOT EXISTS (...)".
Параметры
-
Cake\Database\ExpressionInterface$query - внутренний запрос
Возвращает
$this
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\QueryExpressionsetConjunction()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( )
Получает значения типов по умолчанию для текущей карты типов.
Возвращает
arraygetTypeMap()source public
getTypeMap( )
Возвращает существующую карту типов.
Возвращает
Cake\Database\TypeMapsetDefaultTypes()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