Класс 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
Добавляет новое условие в объект выражения в виде «поле МЕЖДУ от И до».
- 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__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\ExpressionInterfaceadd()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\QueryExpressionbetween()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.
Возвращаемое значение
booleanin()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
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\QueryExpressionsql()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