Класс QueryExpression
Представляет выражение SQL-запроса. Внутренне он хранит дерево выражений, которое можно скомпилировать, преобразовав этот объект в строку, и которая будет содержать правильно скобочное и вложенное выражение.
- Cake\Database\Expression\QueryExpression реализует Cake\Database\ExpressionInterface, Countable использует Cake\Database\TypeMapTrait
Непосредственные подклассы
Краткое описание свойств
-
$_conditionsprotectedarrayСписок строк или других объектов выражений, представляющих «ветви» дерева выражений. Например, один ключ массива может выглядеть так: "sum > :value"
-
$_conjunctionprotectedstringСтрока, используемая для объединения каждого из внутренних выражений, хранящихся в этом объекте, например, «И», «ИЛИ» и т. д.
Унаследованные свойства
Краткое описание методов
- __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 от AND до».
- count() public
Возвращает количество внутренних условий, хранящихся в этом выражении. Полезно для определения, является ли этот объект выражения пустым или он сгенерирует непустую строку при компиляции.
- eq() publicДобавляет новое условие в объект выражения в виде «поле = значение».
- equalFields() publicСтроит условие равенства или присвоения с оболочкой идентификатора.
- exists() publicДобавляет новое условие в объект выражения в виде «EXISTS (...)».
- getConjunction() 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
Добавляет новый набор условий на этот уровень дерева и инвертирует конечный результат, добавив NOT, он будет выглядеть как «НЕ ( (условие1) И (условия2) )» — союз зависит от текущего, настроенного для этого объекта.
- notEq() publicДобавляет новое условие в объект выражения в виде «поле != значение».
- notExists() publicДобавляет новое условие в объект выражения в виде «НЕ EXISTS (...)».
- notIn() public
Добавляет новое условие в объект выражения в виде «поле НЕ IN (значение1, значение2)».
- notLike() publicДобавляет новое условие в объект выражения в виде «поле НЕ LIKE значение».
- or_() public
Возвращает новый объект QueryExpression, содержащий все переданные условия и устанавливает союз на «ИЛИ».
- setConjunction() publicИзменяет конъюнкцию для условий на данном уровне дерева выражений.
- sql() public
Возвращает строковое представление этого объекта, чтобы его можно было использовать в SQL-запросе. Обратите внимание, что значения условий не включены в строку, вместо них используются заготовки, которые можно заменить соответствующими значениями в кавычках.
-
Изменяет конъюнкцию для условий на этом уровне дерева выражений. Если вызвать без аргументов, вернёт текущее значение.
- traverse() 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необязательно [] ассоциативный массив значений, которые нужно сопоставить с переданными условиями. Если значений $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, настроенное с помощью карты типов.
Возвращает
$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, настроенное с помощью карты типов. Если оно заканчивается на "[]" и значение является массивом, то будет создано несколько заготовок, по одной на каждое значение в массиве.
Возвращает
$this
equalFields()source public
equalFields( string $left , string $right )
Создает условие равенства или присваивание с оберткой идентификатора.
Параметры
- строка
$left - Имя поля условия левого соединения.
- строка
$right - Имя поля условия правого соединения.
Возвращает
$this
exists()source public
exists( Cake\Database\ExpressionInterface $query )
Добавляет новое условие в объект выражения в форме "EXISTS (...)".
Параметры
-
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
$typeнеобязательно 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необязательно 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
$typeнеобязательно null - Имя типа для $value, как настроено в Type map.
Возвращает
$this
isCallable()source public
isCallable( callable $c )
Проверяет, является ли вызов допустимым.
Мы не принимаем обратные вызовы типа ['класс', 'метод'], так как они часто содержат пользовательский ввод, а массивы строк легко подменить.
Параметры
- 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необязательно 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необязательно 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необязательно null - Имя типа для $value, как настроено в Type map.
Возвращает
$this
not()source public
not( string|array|Cake\Database\ExpressionInterface $conditions , array $types = [] )
Добавляет новый набор условий на данном уровне дерева и инвертирует окончательный результат, добавляя NOT, это будет выглядеть как "НЕ ( (условие1) И (условия2) )" конъюнкция зависит от текущей, настроенной для этого объекта.
Параметры
- string|array|
Cake\Database\ExpressionInterface$conditions - для добавления и инвертирования
- array
$typesнеобязательно [] ассоциативный массив полей, указывающих на тип передаваемых значений. Используется для правильной привязки значений к операторам.
Возвращает
$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необязательно 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\QueryExpressionsetConjunction()source public
setConjunction( string $conjunction )
Изменяет сопряжение для условий на данном уровне дерева выражений.
Параметры
- строка
$conjunction - Значение, используемое для объединения условий
Возвращает
$this
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 )
Изменяет сопряжение для условий на данном уровне дерева выражений. Если вызвано без аргументов, вернёт текущее значение.
Устарело
3.4.0 Используйте setConjunction()/getConjunction() вместо этого.Параметры
- строка|null
$conjunctionнеобязательно null значение, используемое для объединения условий. Если null, не устанавливает значение, а возвращает хранящееся текущее
Возвращает
строка|Cake\Database\Expression\QueryExpression$this
traverse()source public
traverse( callable $callable )
Проходит по структуре дерева этого выражения запроса, выполняя функцию обратного вызова для каждого из условий, включённых в этот объект. Полезно для компиляции конечного выражения или интроспекции структуры.
Функция обратного вызова получает в качестве единственного аргумента экземпляр ExpressionInterface
Параметры
- вызываемая функция
$callable - Вызываемая функция, применяемая ко всем подвыражениям.
Реализация
Cake\Database\ExpressionInterface::traverse() type()source public устарело
type( string|null $conjunction = null )
Обратная совместимость обёртки для tieWith()
Устарело
3.2.0 Используйте setConjunction()/getConjunction() вместо этогоПараметры
- строка|null
$conjunctionнеобязательно null значение, используемое для объединения условий. Если null, не устанавливает значение, а возвращает хранящееся текущее
Возвращает
строка|Cake\Database\Expression\QueryExpression$this
Методы, используемые из Cake\Database\TypeMapTrait
defaultTypes()source public устарело
defaultTypes( array $types = null )
Разрешает устанавливать типы по умолчанию при цепочечном запросе
Устарело
3.4.0 Используйте setDefaultTypes()/getDefaultTypes() вместо этого.Параметры
- массив
$typesнеобязательно null - Массив типов для установки.
Возвращает
$this|массив
getDefaultTypes()source public
getDefaultTypes( )
Получает типы по умолчанию текущей карты типов.
Возвращает
массивgetTypeMap()source public
getTypeMap( )
Возвращает существующую карту типов.
Возвращает
Cake\Database\TypeMapsetDefaultTypes()source public
setDefaultTypes( array $types )
Разрешает устанавливать типы по умолчанию при цепочечном запросе.
Параметры
- массив
$types - Массив типов для установки.
Возвращает
$this
setTypeMap()source public
setTypeMap( array|Cake\Database\TypeMap $typeMap )
Создаёт новую карту типов, если $typeMap является массивом, иначе меняет её на заданную.
Параметры
- массив|
Cake\Database\TypeMap$typeMap - Создаёт карту типов, если массив, иначе устанавливает заданную карту типов
Возвращает
$this
typeMap()source public устарело
typeMap( array|Cake\Database\TypeMap|null $typeMap = null )
Создаёт новую карту типов, если $typeMap является массивом, иначе возвращает существующую карту типов или меняет её на заданную.
Устарело
3.4.0 Используйте setTypeMap()/getTypeMap() вместо этого.Параметры
- массив|
Cake\Database\TypeMap|null$typeMapнеобязательно null - Создаёт карту типов, если массив, иначе устанавливает заданную карту типов
Возвращает
$this|\Cake\Database\TypeMap
Подробное описание свойств
$_conditionssource
protected массив
Список строк или других объектов выражений, представляющих «ветви» дерева выражений. Например, один ключ массива может выглядеть как «сумма > :значение»
[]
$_conjunctionsource
protected строка
Строка, используемая для объединения каждого из внутренних выражений, которые этот объект хранит внутри, например, «И», «ИЛИ» и т. д.
© 2005–present 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.6/class-Cake.Database.Expression.QueryExpression.html