Класс 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 от И до».
- count() public
Возвращает количество внутренних условий, хранящихся в этом выражении. Полезно для определения, является ли этот объект выражения пустым или он сгенерирует непустую строку при компиляции
- eq() publicДобавляет новое условие в объект выражения в виде «поле = значение».
- equalFields() publicСтроит условие равенства или присвоения с идентификатором обертки.
- exists() 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
Добавляет новый набор условий к этому уровню дерева и отрицает окончательный результат, добавив НЕ, он будет выглядеть как «НЕ ( (условие1) И (условия2) )» союз зависит от текущего, настроенного для этого объекта.
- notEq() publicДобавляет новое условие в объект выражения в виде «поле != значение».
- notExists() publicДобавляет новое условие в объект выражения в виде «НЕ СУЩЕСТВУЕТ (...)».
- notIn() public
Добавляет новое условие в объект выражения в виде «поле НЕ IN (значение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().
Параметры
- string
$method - Имя метода.
- array
$args - Аргументы, которые нужно передать методу.
Возвращает
Cake\Database\Expression\QueryExpressionВыбрасывает
BadMethodCallException__construct()source public
__construct( string|array|Cake\Database\Expression\QueryExpression $conditions [] , array|Cake\Database\TypeMap $types [] , string $conjunction 'AND' )
Конструктор. Новый объект выражения может быть создан без параметров и динамически построен. В противном случае можно передать массив условий, содержащий структуру массива в виде дерева, которая должна быть обработана, и/или другие объекты выражений. Дополнительно можно установить ключевое слово союза, используемое для объединения каждой части этого уровня дерева выражения.
Параметры
- string|array|
Cake\Database\Expression\QueryExpression$conditionsнеобязательно [] Структура массива в виде дерева, содержащая все условия, которые должны быть добавлены или вложены в этот объект выражения.
- array|
Cake\Database\TypeMap$typesнеобязательно [] Ассоциативный массив типов, которые должны быть связаны со значениями, переданными в $conditions.
- string
$conjunctionнеобязательно 'AND' Сцепка, которая будет объединять все строковые условия на этом уровне дерева выражений. Например, "AND", "OR", "XOR"...
См. также
\Cake\Database\Expression\QueryExpression::add() для получения более подробной информации о $conditions и $types_addConditions()source protected
_addConditions( array $conditions , array $types )
Вспомогательная функция, используемая для разложения вложенного массива условий и построения структуры дерева внутри этого объекта для представления полного выражения SQL. Строковые условия хранятся непосредственно в условиях, а все остальные представления обертываются в соответствующий экземпляр или в этот класс.
Параметры
- array
$conditions - список условий, которые будут сохранены в этом объекте
- array
$types - список типов, связанных с полями, на которые ссылаются $conditions
_calculateType()source protected
_calculateType( string|Cake\Database\Expression\QueryExpression $field )
Возвращает имя типа для переданного поля, если оно было сохранено в typeMap.
Параметры
- string|
Cake\Database\Expression\QueryExpression$field - Имя поля, для которого требуется получить тип.
Возвращает
string|nullВычисленный тип или null, если тип неизвестен.
_parseCondition()source protected
_parseCondition( string $field , mixed $value )
Разбирает строковые условия, пытаясь извлечь оператор, если он есть, и, наконец, возвращает либо соответствующий объект QueryExpression, либо обычное строковое представление условия. Эта функция отвечает за создание заглушек и замену значений на них, сохраняя значение в другом месте для последующей привязки.
Параметры
- string
$field Значение, из которого будет извлечено фактическое поле и оператор.
- mixed
$value - Значение, которое должно быть привязано к заглушке для поля
Возвращает
string|Cake\Database\ExpressionInterfaceadd()source public
add( string|array|Cake\Database\ExpressionInterface $conditions , array $types [] )
Добавляет одно или несколько условий к этому объекту выражения. Условия могут быть выражены в одномерном массиве, что приведет к непосредственному добавлению всех условий на данном уровне дерева, или они могут быть произвольно вложены, что приведет к созданию дополнительных объектов выражений, которые будут вложены внутрь и сконфигурированы с использованием указанного союза.
Если для любого из полей тип выражен как "type[]" (обратите внимание на скобки), то это приведет к динамическому переписыванию заглушки. Если значение является массивом, то будет создано столько заглушек, сколько значений в нём.
Параметры
- string|array|
Cake\Database\ExpressionInterface$conditions Одно или несколько условий для добавления. При использовании массива и ключ — 'OR' или 'AND', будет создан новый объект выражения с этим союзом и внутренним значением массива, переданным в качестве условий.
- array
$typesнеобязательно [] Ассоциативный массив полей, указывающих на тип значений, которые передаются. Используется для правильной привязки значений к операторам.
Возвращает
$this
См. также
\Cake\Database\Query::where() для примеров условийaddCase()source public
addCase( array|Cake\Database\ExpressionInterface $conditions , array|Cake\Database\ExpressionInterface $values [] , array $types [] )
Добавляет новое выражение case в объект выражения.
Параметры
- array|
Cake\Database\ExpressionInterface$conditions Условия для проверки. Должен быть экземпляр ExpressionInterface или массив экземпляров ExpressionInterface.
- array|
Cake\Database\ExpressionInterface$valuesнеобязательно [] Ассоциативный массив значений, которые должны быть связаны с условиями, переданными в $conditions. Если значений $values больше, чем условий $conditions, то последнее $value используется в качестве значения
ELSE- array
$typesнеобязательно [] Ассоциативный массив типов, которые должны быть связаны со значениями, переданными в $values.
Возвращает
$this
and_()source public
and_( string|array|Cake\Database\Expression\QueryExpression $conditions , array $types [] )
Возвращает новый объект QueryExpression, содержащий все переданные условия и устанавливает союз в "AND".
Параметры
- string|array|
Cake\Database\Expression\QueryExpression$conditions - для объединения с AND
- array
$typesнеобязательно [] Ассоциативный массив полей, указывающих на тип значений, которые передаются. Используется для правильной привязки значений к операторам.
Возвращает
Cake\Database\Expression\QueryExpressionbetween()source public
between( mixed $field , mixed $from , mixed $to , string|null $type null )
Добавляет новое условие к объекту выражения в виде "поле МЕЖДУ от И до".
Параметры
- mixed
$field - Имя поля для сравнения значений в диапазоне.
- mixed
$from - Начальное значение диапазона.
- mixed
$to - Конечное значение в диапазоне сравнения.
- string|null
$typeнеобязательно null - имя типа для $value, как настроено с помощью карты типов.
Возвращает
$this
count()source public
count( )
Возвращает количество внутренних условий, хранящихся в этом выражении. Полезно для определения, пуст ли этот объект выражения или он сгенерирует непустую строку при компиляции.
Возвращает
integerРеализация
Countable::count() eq()source public
eq( string $field , mixed $value , string|null $type null )
Добавляет новое условие к объекту выражения в виде "поле = значение".
Параметры
- string
$field - Базовое поле, которое сравнивается со значением.
- mixed
$value - Значение, которое должно быть привязано к $field для сравнения.
- string|null
$typeнеобязательно null имя типа для $value, как настроено с помощью карты типов. Если он оканчивается на "[]" и значение является массивом, то будет создано несколько заглушек, по одной на каждое значение в массиве.
Возвращает
$this
equalFields()source public
equalFields( string $left , string $right )
Строит условие равенства или присваивания с обёртыванием идентификатора.
Параметры
- string
$left - Имя поля условия левого соединения.
- string
$right - Имя поля условия правого соединения.
Возвращаемое значение
$this
exists()source public
exists( Cake\Database\ExpressionInterface $query )
Добавляет новое условие в объект выражения в виде "EXISTS (...)".
Параметры
-
Cake\Database\ExpressionInterface$query - внутренний запрос
Возвращаемое значение
$this
gt()source public
gt( string $field , mixed $value , string|null $type null )
Добавляет новое условие в объект выражения в форме "поле > значение".
Параметры
- string
$field - Поле базы данных, сравниваемое со значением
- mixed
$value - Значение, которое будет привязано к $field для сравнения
- string|null
$typeнеобязательно null - имя типа для $value, как настроено в Type map.
Возвращаемое значение
$this
gte()source public
gte( string $field , mixed $value , string|null $type null )
Добавляет новое условие в объект выражения в форме "поле >= значение".
Параметры
- string
$field - Поле базы данных, сравниваемое со значением
- mixed
$value - Значение, которое будет привязано к $field для сравнения
- string|null
$typeнеобязательно null - имя типа для $value, как настроено в Type map.
Возвращаемое значение
$this
hasNestedExpression()source public
hasNestedExpression( )
Возвращает true, если это выражение содержит другие вложенные объекты ExpressionInterface.
Возвращаемое значение
booleanin()source public
in( string $field , string|array $values , string|null $type null )
Добавляет новое условие в объект выражения в форме "поле IN (значение1, значение2)".
Параметры
- string
$field - Поле базы данных, сравниваемое со значением
- string|array
$values - значение, которое будет привязано к $field для сравнения
- string|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 )
Добавляет новое условие в объект выражения в форме "поле 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 поле базы данных, проверяемое на null
Возвращаемое значение
$this
iterateParts()source public
iterateParts( callable $callable )
Выполняет функцию вызова для каждой части, составляющей это выражение.
Функция вызова должна возвращать значение, с которым будет заменена текущая посещаемая часть. Если функция вызова возвращает null, часть полностью удаляется из этого выражения.
Функция обратного вызова получит каждое из условий в качестве первого параметра и ключ как второй параметр. Возможна передача второго параметра по ссылке, что позволит изменить ключ, под которым хранится изменённая часть.
Параметры
- callable
$callable - Функция вызова, применяемая к каждой части.
Возвращаемое значение
$this
like()source public
like( string $field , mixed $value , string|null $type null )
Добавляет новое условие в объект выражения в форме "поле LIKE значение".
Параметры
- string
$field - Поле базы данных, сравниваемое со значением
- mixed
$value - Значение, которое будет привязано к $field для сравнения
- string|null
$typeнеобязательно null - имя типа для $value, как настроено в Type map.
Возвращаемое значение
$this
lt()source public
lt( string $field , mixed $value , string|null $type null )
Добавляет новое условие в объект выражения в форме "поле < значение".
Параметры
- string
$field - Поле базы данных, сравниваемое со значением
- mixed
$value - Значение, которое будет привязано к $field для сравнения
- string|null
$typeнеобязательно null - имя типа для $value, как настроено в Type map.
Возвращаемое значение
$this
lte()source public
lte( string $field , mixed $value , string|null $type null )
Добавляет новое условие в объект выражения в форме "поле <= значение".
Параметры
- string
$field - Поле базы данных, сравниваемое со значением
- mixed
$value - Значение, которое будет привязано к $field для сравнения
- string|null
$typeнеобязательно null - имя типа для $value, как настроено в Type map.
Возвращаемое значение
$this
not()source public
not( string|array|Cake\Database\Expression\QueryExpression $conditions , array $types [] )
Добавляет новый набор условий к этому уровню дерева и инвертирует конечный результат, добавив NOT, это будет выглядеть как "NOT ( (условие1) И (условия2) )", конъюнкция зависит от текущей, настроенной для этого объекта.
Параметры
- string|array|
Cake\Database\Expression\QueryExpression$conditions - для добавления и инвертирования
- array
$typesнеобязательно [] ассоциативный массив полей, указывающий на тип передаваемых значений. Используется для корректной привязки значений к операторам.
Возвращаемое значение
$this
notEq()source public
notEq( string $field , mixed $value , string|null $type null )
Добавляет новое условие в объект выражения в форме "поле != значение".
Параметры
- string
$field - Поле базы данных, сравниваемое со значением
- mixed
$value - Значение, которое будет привязано к $field для сравнения
- string|null
$typeнеобязательно null имя типа для $value, как настроено в Type map. Если он заканчивается на "[]" и значение является массивом, то будут созданы несколько заглушек, по одной на каждое значение в массиве.
Возвращаемое значение
$this
notExists()source public
notExists( Cake\Database\ExpressionInterface $query )
Добавляет новое условие к объекту выражения в виде "NOT EXISTS (...)".
Параметры
-
Cake\Database\ExpressionInterface$query - внутренний запрос
Возвращаемое значение
$this
notIn()source public
notIn( string $field , array $values , string|null $type null )
Добавляет новое условие к объекту выражения в форме "поле НЕ В (значение1, значение2)".
Параметры
- строка
$field - Поле базы данных, которое сравнивается со значением
- массив
$values - значение, которое должно быть привязано к $field для сравнения
- строка|null
$typeнеобязательно null - имя типа для $value, как настроено с помощью карты типов.
Возвращаемое значение
$this
notLike()source public
notLike( string $field , mixed $value , string|null $type null )
Добавляет новое условие к объекту выражения в форме "поле НЕ ПОДОБНО значение".
Параметры
- строка
$field - Поле базы данных, которое сравнивается со значением
- смешанное
$value - Значение, которое должно быть привязано к $field для сравнения
- строка|null
$typeнеобязательно null - имя типа для $value, как настроено с помощью карты типов.
Возвращаемое значение
$this
or_()source public
or_( string|array|Cake\Database\Expression\QueryExpression $conditions , array $types [] )
Возвращает новый объект QueryExpression, содержащий все переданные условия и устанавливает сопряжение в «ИЛИ».
Параметры
- строка|массив|
Cake\Database\Expression\QueryExpression$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 — массив, иначе возвращает существующую карту типов или меняет её на заданную.
Параметры
- массив|
Cake\Database\TypeMap|null$typeMapнеобязательно null - Создаёт карту типов, если массив, иначе устанавливает заданную карту типов
Возвращаемое значение
$this|\Cake\Database\TypeMap
Подробности свойств
$_conditionssource
protected массив
Список строк или других объектов выражения, которые представляют «ветви» дерева выражений. Например, один ключ массива может выглядеть как «сумма > :значение»
[]
$_conjunctionsource
protected строка
Строка, используемая для объединения каждого из внутренних выражений, которые этот объект хранит внутри, например «И», «ИЛИ» и т. д.
© 2005–2016 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.
http://api.cakephp.org/3.2/class-Cake.Database.Expression.QueryExpression.html