Класс QueryExpression
Представляет выражение SQL запроса. Внутренне он хранит дерево выражений, которое можно скомпилировать, преобразуя этот объект в строку, и она будет содержать правильно скобованное и вложенное выражение.
Краткое описание свойств
- $_conditions protected
arrayСписок строк или других объектов выражений, представляющих «ветви» дерева выражений. Например, один ключ массива может выглядеть так: «sum > :value»
- $_conjunction protected
stringСтрока, используемая для объединения каждого из внутренних выражений, которые хранятся в этом объекте, например, «И», «ИЛИ» и т. д.
- $_typeMap protected
Cake\Database\TypeMap|null
Краткое описание методов
-
__clone() public
Клонирует этот объект и его поддерево выражений.
-
__construct() public
Конструктор. Новый объект выражения можно создать без параметров и динамически построить. В противном случае можно передать массив условий, содержащий либо древовидную структуру массива для разбора, либо другие объекты выражений. Допускается задать ключевое слово союзии, используемое для объединения каждой части этого уровня дерева выражений.
-
_addConditions() protected
Вспомогательная функция, используемая для разложения вложенного массива условий и построения древовидной структуры внутри этого объекта для представления полного SQL-выражения. Строковые условия хранятся непосредственно в условиях, а любой другой вид представления оборачивается соответствующим экземпляром этого класса.
-
_calculateType() protected
Возвращает имя типа для переданного поля, если оно было сохранено в typeMap.
-
_parseCondition() protected
Разбирает строковые условия, пытаясь извлечь оператор, если таковой имеется, и, наконец, возвращает либо соответствующий объект QueryExpression, либо обычное строковое представление условия. Эта функция отвечает за генерацию плейсхолдеров и замену значений ими, сохраняя значение в другом месте для последующей привязки.
-
add() public
Добавляет одно или несколько условий к этому объекту выражения. Условия могут быть выражены в одномерном массиве, что приведет к непосредственному добавлению всех условий на этом уровне дерева, или могут быть произвольно вложенными, что приведет к созданию дополнительных объектов выражений, которые будут вложены внутрь и настроены для использования указанного союза.
-
addCase() public
Добавляет новое выражение case в объект выражения.
-
and() public
Возвращает новый объект QueryExpression, содержащий все переданные условия и устанавливает союз в «И».
-
and_() public deprecated
Возвращает новый объект QueryExpression, содержащий все переданные условия и устанавливает союз в «И».
-
between() public
Добавляет новое условие в объект выражения в виде «поле МЕЖДУ от И до».
-
count() public
Возвращает количество внутренних условий, хранящихся в этом выражении. Полезно для определения, является ли этот объект выражения пустым или он сгенерирует непустую строку при компиляции.
-
eq() public
Добавляет новое условие в объект выражения в виде «поле = значение».
-
equalFields() public
Строит условие равенства или присваивание с обертыванием идентификатора.
-
exists() public
Добавляет новое условие в объект выражения в виде «СУЩЕСТВУЕТ (...)».
-
getConjunction() public
Получает текущий настроенный союз для условий на этом уровне дерева выражений.
-
getDefaultTypes() public
Получает значения по умолчанию типов текущей карты типов.
-
getTypeMap() public
Возвращает существующую карту типов.
-
gt() public
Добавляет новое условие в объект выражения в виде «поле > значение».
-
gte() public
Добавляет новое условие в объект выражения в виде «поле >= значение».
-
hasNestedExpression() public
Возвращает true, если это выражение содержит другие вложенные объекты ExpressionInterface.
-
in() public
Добавляет новое условие в объект выражения в виде «поле В (значение1, значение2)».
-
isCallable() public deprecated
Проверяет, является ли вызываемый элемент допустимым.
-
isNotNull() public
Добавляет новое условие в объект выражения в виде «поле НЕ NULL».
-
isNull() public
Добавляет новое условие в объект выражения в виде «поле NULL».
-
iterateParts() public
Выполняет функцию вызова для каждой из частей, составляющих это выражение.
-
like() public
Добавляет новое условие в объект выражения в виде «поле ПОДОБНО значение».
-
lt() public
Добавляет новое условие в объект выражения в виде «поле < значение».
-
lte() public
Добавляет новое условие в объект выражения в виде «поле <= значение».
-
not() public
Добавляет новый набор условий на этот уровень дерева и инвертирует окончательный результат путем добавления NOT, он будет выглядеть как «НЕ ( (условие1) И (условия2) )», союз зависит от текущего, настроенного для этого объекта.
-
notEq() public
Добавляет новое условие в объект выражения в виде «поле! = значение».
-
notExists() public
Добавляет новое условие в объект выражения в виде «НЕ СУЩЕСТВУЕТ (...)».
-
notIn() public
Добавляет новое условие в объект выражения в виде «поле НЕ В (значение1, значение2)».
-
notLike() public
Добавляет новое условие в объект выражения в виде «поле НЕ ПОДОБНО значение».
-
or() public
Возвращает новый объект QueryExpression, содержащий все переданные условия и устанавливает союз в «ИЛИ».
-
or_() public deprecated
Возвращает новый объект QueryExpression, содержащий все переданные условия и устанавливает союз в «ИЛИ».
-
setConjunction() public
Изменяет союз для условий на этом уровне дерева выражений.
-
setDefaultTypes() public
Перезаписывает сопоставления типов по умолчанию для полей в реализующем объекте.
-
setTypeMap() public
Создает новую TypeMap, если $typeMap является массивом, в противном случае меняет её на заданную.
-
sql() public
Преобразует узел в фрагмент SQL-строки.
-
traverse() public
Итерируется по каждой части выражения рекурсивно для каждого уровня дерева выражений и выполняет вызываемый элемент $callback, передавая в качестве первого параметра экземпляр выражения, по которому в данный момент происходит итерирование.
Краткое описание методов
__clone() public
__clone(): void
Клонировать этот объект и его поддерево выражений.
Returns
void__construct() public
__construct(string|arrayCake\Database\ExpressionInterface $conditions = [], arrayCake\Database\TypeMap $types = [], string $conjunction = 'AND')
Конструктор. Новый объект выражения может быть создан без каких-либо параметров и построен динамически. В противном случае можно передать массив условий, содержащий древовидную структуру массива для анализа и/или другие объекты выражений. Дополнительно можно установить ключевое слово конъюнкции, которое будет использоваться для соединения каждой части этого уровня дерева выражений.
Parameters
-
string|arrayCake\Database\ExpressionInterface$conditions optional Древовидная структура массива, содержащая все условия, которые должны быть добавлены или вложены внутри этого объекта выражения.
-
arrayCake\Database\TypeMap$types optional ассоциативный массив типов, которые должны быть связаны со значениями, переданными в $conditions.
-
string$conjunction optional связующее звено, которое будет соединять все строковые условия на этом уровне дерева выражений. Например, "AND", "OR", "XOR"...
See Also
_addConditions() protected
_addConditions(array $conditions, array $types): void
Вспомогательная функция, используемая для разложения вложенного массива условий и построения древовидной структуры внутри этого объекта для представления полного SQL-выражения. Строковые условия хранятся непосредственно в условиях, в то время как любое другое представление оборачивается в адекватный экземпляр или этого класса.
Parameters
-
array$conditions список условий, которые должны быть сохранены в этом объекте
-
array$types список типов, связанных с полями, указанными в $conditions
Returns
void_calculateType() protected
_calculateType(stringCake\Database\ExpressionInterface $field): string|null
Возвращает имя типа для переданного поля, если оно было сохранено в typeMap
Parameters
-
stringCake\Database\ExpressionInterface$field Имя поля, для которого нужно получить тип.
Returns
string|null_parseCondition() protected
_parseCondition(string $field, mixed $value): stringCake\Database\ExpressionInterface
Разбирает строковые условия, пытаясь извлечь оператор внутри них, если таковой имеется, и, наконец, возвращая либо адекватный объект QueryExpression, либо простое строковое представление условия. Эта функция отвечает за генерацию заполнителей и замену значений ими, одновременно сохраняя значение в другом месте для будущего связывания.
Parameters
-
string$field Значение, из которого будут извлечены фактическое поле и оператор.
-
mixed$value Значение, которое будет привязано к заполнитель для поля
Returns
stringCake\Database\ExpressionInterfaceThrows
InvalidArgumentExceptionЕсли оператор недействителен или отсутствует при использовании NULL.
add() public
add(string|arrayCake\Database\ExpressionInterface $conditions, array $types = []): $this
Добавляет одно или несколько условий к этому объекту выражения. Условия могут быть выражены в одномерном массиве, который вызовет добавление всех условий непосредственно на этом уровне дерева, или они могут быть вложены произвольно, заставляя создавать больше объектов выражений, которые будут вложены внутри и настроены для использования указанной конъюнкции.
Если тип, переданный для любого из полей, выражен как "type[]" (обратите внимание на скобки), то это приведет к тому, что заполнитель будет переписан динамически, поэтому, если значение является массивом, он создаст столько заполнителей, сколько значений в нем.
Parameters
-
string|arrayCake\Database\ExpressionInterface$conditions одно или несколько условий, которые должны быть добавлены. При использовании массива и если ключ равен 'OR' или 'AND', будет создан новый объект выражения с этой конъюнкцией и внутренним значением массива, переданным в качестве условий.
-
array$types optional ассоциативный массив полей, указывающих на тип передаваемых значений. Используется для правильного связывания значений с операторами.
Returns
$thisSee Also
addCase() public
addCase(arrayCake\Database\ExpressionInterface $conditions, arrayCake\Database\ExpressionInterface $values = [], array $types = []): $this
Добавляет новое выражение case к объекту выражения
Parameters
-
arrayCake\Database\ExpressionInterface$conditions Условия для проверки. Должен быть экземпляр ExpressionInterface или массив экземпляров ExpressionInterface.
-
arrayCake\Database\ExpressionInterface$values optional ассоциативный массив значений, которые должны быть связаны с условиями, переданными в $conditions. Если $values больше, чем $conditions, последнее значение $value используется в качестве значения
ELSE.-
array$types optional ассоциативный массив типов, которые должны быть связаны со значениями, переданными в $values
Returns
$thisand() public
and(Closure|string|arrayCake\Database\ExpressionInterface $conditions, array $types = []): Cake\Database\Expression\QueryExpression
Возвращает новый объект QueryExpression, содержащий все переданные условия и устанавливающий конъюнкцию как "AND"
Parameters
-
Closure|string|arrayCake\Database\ExpressionInterface$conditions для соединения с AND
-
array$types optional ассоциативный массив полей, указывающих на тип передаваемых значений. Используется для правильного связывания значений с операторами.
Returns
Cake\Database\Expression\QueryExpressionand_() public
and_(Closure|string|arrayCake\Database\ExpressionInterface $conditions, array $types = []): Cake\Database\Expression\QueryExpression
Возвращает новый объект QueryExpression, содержащий все переданные условия и устанавливающий конъюнкцию как "AND"
Parameters
-
Closure|string|arrayCake\Database\ExpressionInterface$conditions для соединения с AND
-
array$types optional ассоциативный массив полей, указывающих на тип передаваемых значений. Используется для правильного связывания значений с операторами.
Returns
Cake\Database\Expression\QueryExpressionbetween() public
between(stringCake\Database\ExpressionInterface $field, mixed $from, mixed $to, string|null $type = null): $this
Добавляет новое условие к объекту выражения в форме "поле BETWEEN от И до".
Parameters
-
stringCake\Database\ExpressionInterface$field Имя поля для сравнения значений в диапазоне.
-
mixed$from Начальное значение диапазона.
-
mixed$to Конечное значение в диапазоне сравнения.
-
string|null$type optional имя типа для $value, как настроено с помощью карты типов.
Returns
$thiscount() public
count(): int
Возвращает количество внутренних условий, хранящихся в этом выражении. Полезно для определения того, является ли этот объект выражения пустым или он сгенерирует непустую строку при компиляции
Returns
inteq() public
eq(stringCake\Database\ExpressionInterface $field, mixed $value, string|null $type = null): $this
Добавляет новое условие к объекту выражения в форме "поле = значение".
Parameters
-
stringCake\Database\ExpressionInterface$field Поле базы данных, которое будет сравниваться со значением
-
mixed$value Значение, которое будет привязано к $field для сравнения
-
string|null$type optional имя типа для $value, как настроено с помощью карты типов. Если оно имеет суффикс "[]" и значение является массивом, то будет создано несколько заполнителей, по одному на каждое значение в массиве.
Returns
$thisequalFields() public
equalFields(string $leftField, string $rightField): $this
Создает условие равенства или присваивание с оберткой идентификатора.
Parameters
-
string$leftField Имя поля левого условия соединения.
-
string$rightField Имя поля правого условия соединения.
Returns
$thisexists() public
exists(Cake\Database\ExpressionInterface $expression): $this
Добавляет новое условие к объекту выражения в форме "EXISTS (...)".
Параметры
-
Cake\Database\ExpressionInterface$expression внутренний запрос
Возвращает
$thisgetConjunction() public
getConjunction(): string
Получает текущую конъюнкцию, настроенную для условий на этом уровне дерева выражения.
Возвращает
stringgetDefaultTypes() public
getDefaultTypes(): array
Получает типы по умолчанию из текущей карты типов.
Возвращает
arraygetTypeMap() public
getTypeMap(): Cake\Database\TypeMap
Возвращает существующую карту типов.
Возвращает
Cake\Database\TypeMapgt() public
gt(stringCake\Database\ExpressionInterface $field, mixed $value, string|null $type = null): $this
Добавляет новое условие к объекту выражения в форме "поле > значение".
Параметры
-
stringCake\Database\ExpressionInterface$field Базовое поле базы данных, сравниваемое со значением
-
mixed$value Значение, которое должно быть привязано к $field для сравнения
-
string|null$type optional имя типа для $value, настроенное с использованием карты типов.
Возвращает
$thisgte() public
gte(stringCake\Database\ExpressionInterface $field, mixed $value, string|null $type = null): $this
Добавляет новое условие к объекту выражения в форме "поле >= значение".
Параметры
-
stringCake\Database\ExpressionInterface$field Базовое поле базы данных, сравниваемое со значением
-
mixed$value Значение, которое должно быть привязано к $field для сравнения
-
string|null$type optional имя типа для $value, настроенное с использованием карты типов.
Возвращает
$thishasNestedExpression() public
hasNestedExpression(): bool
Возвращает true, если это выражение содержит другие вложенные объекты ExpressionInterface.
Возвращает
boolin() public
in(stringCake\Database\ExpressionInterface $field, string|arrayCake\Database\ExpressionInterface $values, string|null $type = null): $this
Добавляет новое условие к объекту выражения в форме "поле IN (значение1, значение2)".
Параметры
-
stringCake\Database\ExpressionInterface$field Базовое поле базы данных, сравниваемое со значением
-
string|arrayCake\Database\ExpressionInterface$values значение, которое должно быть привязано к $field для сравнения
-
string|null$type optional имя типа для $value, настроенное с использованием карты типов.
Возвращает
$thisisCallable() public
isCallable(callable|string|arrayCake\Database\ExpressionInterface $callable): bool
Проверяет, является ли вызываемый объект допустимым.
Мы не принимаем вызываемые объекты в стиле ['класс', 'метод'], так как они часто содержат пользовательский ввод, а массивы строк легко подменить.
Параметры
-
callable|string|arrayCake\Database\ExpressionInterface$callable Вызываемый объект для проверки.
Возвращает
boolisNotNull() public
isNotNull(stringCake\Database\ExpressionInterface $field): $this
Добавляет новое условие к объекту выражения в форме "поле НЕ NULL".
Параметры
-
stringCake\Database\ExpressionInterface$field поле базы данных, проверяемое на непустоту
Возвращает
$thisisNull() public
isNull(stringCake\Database\ExpressionInterface $field): $this
Добавляет новое условие к объекту выражения в форме "поле IS NULL".
Параметры
-
stringCake\Database\ExpressionInterface$field поле базы данных, проверяемое на пустоту
Возвращает
$thisiterateParts() public
iterateParts(callable $callback): $this
Выполняет функцию обратного вызова для каждой части, составляющей данное выражение.
Функция обратного вызова должна возвращать значение, которым будет заменена текущая посещаемая часть. Если функция обратного вызова возвращает null, то часть будет полностью удалена из этого выражения.
Функция обратного вызова получит каждое из условий в качестве первого параметра и ключ во втором параметре. Возможна передача второго параметра по ссылке, это позволит изменить ключ, под которым хранится изменённая часть.
Параметры
-
callable$callback Вызываемый объект, применяемый к каждой части.
Возвращает
$thislike() public
like(stringCake\Database\ExpressionInterface $field, mixed $value, string|null $type = null): $this
Добавляет новое условие к объекту выражения в форме "поле LIKE значение".
Параметры
-
stringCake\Database\ExpressionInterface$field Базовое поле базы данных, сравниваемое со значением
-
mixed$value Значение, которое должно быть привязано к $field для сравнения
-
string|null$type optional имя типа для $value, настроенное с использованием карты типов.
Возвращает
$thislt() public
lt(stringCake\Database\ExpressionInterface $field, mixed $value, string|null $type = null): $this
Добавляет новое условие к объекту выражения в форме "поле < значение".
Параметры
-
stringCake\Database\ExpressionInterface$field Базовое поле базы данных, сравниваемое со значением
-
mixed$value Значение, которое должно быть привязано к $field для сравнения
-
string|null$type optional имя типа для $value, настроенное с использованием карты типов.
Возвращает
$thislte() public
lte(stringCake\Database\ExpressionInterface $field, mixed $value, string|null $type = null): $this
Добавляет новое условие к объекту выражения в форме "поле <= значение".
Параметры
-
stringCake\Database\ExpressionInterface$field Базовое поле базы данных, сравниваемое со значением
-
mixed$value Значение, которое должно быть привязано к $field для сравнения
-
string|null$type optional имя типа для $value, настроенное с использованием карты типов.
Возвращает
$thisnot() public
not(string|arrayClosureCake\Database\ExpressionInterface $conditions, array $types = []): $this
Добавляет новый набор условий на этот уровень дерева и инвертирует окончательный результат путём добавления NOT, это будет выглядеть как "NOT ( (условие1) AND (условия2) )" конъюнкция зависит от текущей конъюнкции, настроенной для этого объекта.
Параметры
-
string|arrayClosureCake\Database\ExpressionInterface$conditions для добавления и инвертирования
-
array$types optional ассоциативный массив полей, указывающий на тип значений, которые передаются. Используется для правильной привязки значений к операторам.
Возвращает
$thisnotEq() public
notEq(stringCake\Database\ExpressionInterface $field, mixed $value, string|null $type = null): $this
Добавляет новое условие к объекту выражения в форме "поле != значение".
Параметры
-
stringCake\Database\ExpressionInterface$field Базовое поле базы данных, сравниваемое со значением
-
mixed$value Значение, которое должно быть привязано к $field для сравнения
-
string|null$type optional имя типа для $value, настроенное с использованием карты типов. Если оно заканчивается на "[]" и значение является массивом, то будет создано несколько заглушек, по одной на каждое значение в массиве.
Возвращает
$thisnotExists() public
notExists(Cake\Database\ExpressionInterface $expression): $this
Добавляет новое условие к объекту выражения в виде "NOT EXISTS (...)".
Параметры
-
Cake\Database\ExpressionInterface$expression внутренний запрос
Возвращает
$thisnotIn() public
notIn(stringCake\Database\ExpressionInterface $field, string|arrayCake\Database\ExpressionInterface $values, string|null $type = null): $this
Добавляет новое условие к объекту выражения в виде "поле НЕ В (значение1, значение2)".
Параметры
-
stringCake\Database\ExpressionInterface$field Поле базы данных для сравнения со значением
-
string|arrayCake\Database\ExpressionInterface$values значение, которое должно быть привязано к $field для сравнения
-
string|null$type optional имя типа для $value, как настроено с помощью карты типов.
Возвращает
$thisnotLike() public
notLike(stringCake\Database\ExpressionInterface $field, mixed $value, string|null $type = null): $this
Добавляет новое условие к объекту выражения в виде "поле НЕ ПОДОБНО значение".
Параметры
-
stringCake\Database\ExpressionInterface$field Поле базы данных для сравнения со значением
-
mixed$value Значение, которое должно быть привязано к $field для сравнения
-
string|null$type optional имя типа для $value, как настроено с помощью карты типов.
Возвращает
$thisor() public
or(Closure|string|arrayCake\Database\ExpressionInterface $conditions, array $types = []): Cake\Database\Expression\QueryExpression
Возвращает новый объект QueryExpression, содержащий все переданные условия и устанавливает сопряжение в "ИЛИ".
Параметры
-
Closure|string|arrayCake\Database\ExpressionInterface$conditions для объединения с ИЛИ
-
array$types optional ассоциативный массив полей, указывающих на тип передаваемых значений. Используется для правильной привязки значений к операторам.
Возвращает
Cake\Database\Expression\QueryExpressionor_() public
or_(Closure|string|arrayCake\Database\ExpressionInterface $conditions, array $types = []): Cake\Database\Expression\QueryExpression
Возвращает новый объект QueryExpression, содержащий все переданные условия и устанавливает сопряжение в "ИЛИ".
Параметры
-
Closure|string|arrayCake\Database\ExpressionInterface$conditions для объединения с ИЛИ
-
array$types optional ассоциативный массив полей, указывающих на тип передаваемых значений. Используется для правильной привязки значений к операторам.
Возвращает
Cake\Database\Expression\QueryExpressionsetConjunction() public
setConjunction(string $conjunction): $this
Изменяет сопряжение для условий на данном уровне дерева выражений.
Параметры
-
string$conjunction Значение, используемое для объединения условий
Возвращает
$thissetDefaultTypes() public
setDefaultTypes(array $types): $this
Перезаписывает сопоставления типов по умолчанию для полей в реализующем объекте.
Этот метод полезен, если вам нужно установить сопоставления типов, которые разделяются между несколькими функциями/выражениями в запросе.
Чтобы добавить значения по умолчанию без перезаписи существующих, используйте getTypeMap()->addDefaults()
Параметры
-
array$types Массив типов для установки.
Возвращает
$thisСм. также
setTypeMap() public
setTypeMap(arrayCake\Database\TypeMap $typeMap): $this
Создаёт новую TypeMap, если $typeMap является массивом, иначе меняет её на заданную.
Параметры
-
arrayCake\Database\TypeMap$typeMap Создаёт TypeMap, если массив, иначе устанавливает заданную TypeMap
Возвращает
$thissql() public
sql(Cake\Database\ValueBinder $binder): string
Преобразует узел в фрагмент SQL-строки.
Параметры
-
Cake\Database\ValueBinder$binder
Возвращает
stringtraverse() public
traverse(Closure $callback): $this
Итерируется по каждой части выражения рекурсивно для каждого уровня дерева выражений и выполняет вызов $callback, передавая в качестве первого параметра экземпляр выражения, по которому сейчас итерируется.
Параметры
-
Closure$callback
Возвращает
$thisПодробности свойств
$_conditions protected
Список строк или других объектов выражений, представляющих «ветви» дерева выражений. Например, один ключ массива может выглядеть как "сумма > :значение"
Тип
array$_conjunction protected
Строка, используемая для объединения каждого из внутренних выражений, которые этот объект хранит внутри, например, "И", "ИЛИ" и т. д.
Тип
string$_typeMap protected
Тип
Cake\Database\TypeMap|null
© 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/4.2/class-Cake.Database.Expression.QueryExpression.html