Класс 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, содержащий все переданные условия и устанавливает союз в «AND».
- between() public
Добавляет новое условие в объект выражения в виде «поле BETWEEN от AND до».
- count() public
Возвращает количество внутренних условий, хранящихся в этом выражении. Полезно определить, является ли этот объект выражения пустым или он сгенерирует непустую строку при компиляции.
- eq() publicДобавляет новое условие в объект выражения в виде «поле = значение».
- equalFields() publicСтроит условие равенства или присваивания с оболочкой идентификатора.
- exists() publicДобавляет новое условие в объект выражения в виде «СУЩЕСТВУЕТ (...)».
- 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Добавляет новое условие в объект выражения в виде «НЕ СУЩЕСТВУЕТ (...)».
- 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' )
Конструктор. Новый объект выражения можно создать без параметров и динамически построить. В противном случае можно передать массив условий, содержащий либо структуру массива в виде дерева для разбора, либо другие объекты выражений. Дополнительно можно задать ключевое слово союза, используемое для объединения каждой части этого уровня дерева выражений.
Параметры
- string|array|
Cake\Database\ExpressionInterface$conditionsoptional [] структура массива в виде дерева, содержащая все условия, которые должны быть добавлены или вложены внутри этого объекта выражения.
- array|
Cake\Database\TypeMap$typesoptional [] ассоциативный массив типов, которые должны быть связаны со значениями, переданными в $conditions.
- string
$conjunctionoptional '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
$typesoptional [] ассоциативный массив полей, указывающих на тип значений, которые передаются. Используется для правильного привязывания значений к операторам.
Возвращает
$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$valuesoptional [] ассоциативный массив значений, которые должны быть связаны с условиями, переданными в $conditions. Если значений $values больше, чем условий $conditions, последнее значение $value используется как значение
ELSE- array
$typesoptional [] ассоциативный массив типов, которые должны быть связаны со значениями, переданными в $values
Возвращает
$this
and_()source public
and_( callable|string|array|Cake\Database\ExpressionInterface $conditions , array $types = [] )
Возвращает новый объект QueryExpression, содержащий все переданные условия и устанавливает союз "AND".
Параметры
- callable|string|array|
Cake\Database\ExpressionInterface$conditions - для объединения с AND
- array
$typesoptional [] ассоциативный массив полей, указывающих на тип значений, которые передаются. Используется для правильного привязывания значений к операторам.
Возвращает
Cake\Database\Expression\QueryExpressionbetween()source public
between( string|Cake\Database\ExpressionInterface $field , mixed $from , mixed $to , string|null $type = null )
Добавляет новое условие в объект выражения в форме "поле BETWEEN от AND до".
Параметры
- string|
Cake\Database\ExpressionInterface$field - Имя поля, которое сравнивается со значениями в диапазоне.
- mixed
$from - Начальное значение диапазона.
- mixed
$to - Конечное значение в диапазоне сравнения.
- string|null
$typeoptional null - имя типа для $value, настроенного с помощью Type map.
Возвращает
$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
$typeoptional null имя типа для $value, настроенного с помощью Type map. Если оно заканчивается "[]" и значение является массивом, то будут созданы несколько плейсхолдеров, по одному на каждое значение в массиве.
Возвращает
$this
equalFields()source public
equalFields( string $left , string $right )
Создаёт условие равенства или присвоения с обёрткой идентификатора.
Параметры
- string
$left - Левое поле условия соединения.
- string
$right - Правое поле условия соединения.
Возвращает
$this
exists()source public
exists( Cake\Database\ExpressionInterface $query )
Добавляет новое условие в объект выражения в форме "EXISTS (...)".
Параметры
-
Cake\Database\ExpressionInterface$query - внутренний запрос
Возвращает
$this
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, как настроено с помощью карты типов.
Возвращает
$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, как настроено с помощью карты типов.
Возвращает
$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, как настроено с помощью карты типов.
Возвращает
$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необязательно null - имя типа для $value, как настроено с помощью карты типов.
Возвращает
$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, как настроено с помощью карты типов.
Возвращает
$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, как настроено с помощью карты типов.
Возвращает
$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, как настроено с помощью карты типов. Если оно суффиксровано «[]» и значение является массивом, то будут созданы несколько плейсхолдеров, по одному на каждое значение в массиве.
Возвращает
$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)".
Параметры
- 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_( callable|string|array|Cake\Database\ExpressionInterface $conditions , array $types = [] )
Возвращает новый объект QueryExpression, содержащий все переданные условия и устанавливает сопряжение в "ИЛИ".
Параметры
- callable|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 deprecated
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 )
Обходит древовидную структуру этого выражения запроса, выполняя функцию обратного вызова для каждого из условий, включённых в этот объект. Полезно для компиляции окончательного выражения или проведения интроспекции структуры.
Функция обратного вызова получает в качестве единственного аргумента экземпляр ExpressionInterface
Параметры
- callable
$callable - Функция обратного вызова, которая применяется ко всем подвыражениям.
Реализация
Cake\Database\ExpressionInterface::traverse() type()source public deprecated
type( string|null $conjunction = null )
Обратная совместимость обёртки для tieWith()
Устарело
3.2.0 Используйте setConjunction()/getConjunction() вместо этогоПараметры
- string|null
$conjunctionнеобязательно null значение, используемое для объединения условий. Если null, не устанавливает значение, а возвращает хранящееся текущее значение
Возвращает
string|Cake\Database\Expression\QueryExpression$this
Методы, используемые из Cake\Database\TypeMapTrait
defaultTypes()source public deprecated
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 )
Перезаписывает значения по умолчанию для сопоставлений типов полей в реализующем объекте.
Этот метод полезен, если вам нужно установить сопоставления типов, которые используются в нескольких функциях/выражениях в запросе.
Чтобы добавить значения по умолчанию без перезаписи существующих, используйте getTypeMap()->addDefaults()
Параметры
- array
$types - Массив типов для установки.
Возвращает
$this
См.
\Cake\Database\TypeMap::setDefaults()setTypeMap()source public
setTypeMap( array|Cake\Database\TypeMap $typeMap )
Создаёт новую карту типов, если $typeMap — массив, иначе меняет её на указанную.
Параметры
- array|
Cake\Database\TypeMap$typeMap - Создаёт карту типов, если массив, иначе устанавливает переданную карту типов
Возвращает
$this
typeMap()source public deprecated
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–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.7/class-Cake.Database.Expression.QueryExpression.html