Класс QueryExpression
Представляет выражение SQL запроса. Внутренне он хранит дерево выражений, которое можно скомпилировать, преобразовав этот объект в строку, и будет содержать правильно скобочное и вложенное выражение.
- Cake\Database\Expression\QueryExpression реализует Cake\Database\ExpressionInterface, Countable использует Cake\Database\TypeMapTrait
Подробное описание метода
__callsource public
__call( string $method , array $args )
Помогает прозрачно вызывать методы and() и or().
Параметры
- string
$method - Имя метода.
- array
$args - Аргументы для передачи методу.
Возвращает
Cake\Database\Expression\QueryExpression\Cake\Database\Expression\QueryExpression
Исключения
BadMethodCallException\BadMethodCallException
__constructsource 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"...
См. также
QueryExpression::add() для получения дополнительной информации о $conditions и $types_addConditionssource protected
_addConditions( array $conditions , array $types )
Вспомогательная функция, используемая для разложения вложенного массива условий и построения структуры дерева внутри этого объекта для представления полного выражения SQL. Строковые условия хранятся непосредственно в условиях, а все другие представления оборачиваются соответствующим экземпляром или этим классом.
Параметры
- array
$conditions - Список условий, которые должны храниться в этом объекте
- array
$types - Список типов, связанных с полями, указанными в $conditions
_parseConditionsource protected
_parseCondition( string $field , mixed $value )
Парсит строковые условия, пытаясь извлечь оператор, если он есть, и, наконец, возвращает либо соответствующий объект QueryExpression, либо просто строковое представление условия. Эта функция отвечает за создание заготовок и замену значений ими, сохраняя значение в другом месте для последующей привязки.
Параметры
- string
$field - Значение, из которого будет извлечено фактическое поле и оператор.
- mixed
$value - Значение, которое должно быть привязано к заполнитель для поля
Возвращает
string|Cake\Database\ExpressionInterfacestring|\Cake\Database\ExpressionInterface
addsource public
add( string|array|Cake\Database\ExpressionInterface $conditions , array $types [] )
Добавляет одно или несколько условий в этот объект выражения. Условия могут быть выражены в одномерном массиве, что приведет к непосредственному добавлению всех условий на этом уровне дерева, или они могут быть вложены произвольным образом, создавая дополнительные объекты выражений, которые будут вложены внутри и сконфигурированы для использования указанного сопряжения.
Если тип, переданный для любого из полей, выражен как "type[]" (в скобках), это приведет к динамической переписыванию заготовки. Таким образом, если значение является массивом, он создаст столько заготовок, сколько значений в нём.
Параметры
- string|array|
Cake\Database\ExpressionInterface$conditions - Одно или несколько условий для добавления. При использовании массива и ключа «OR» или «AND» будет создан новый объект выражения с этим сопряжением и переданным в качестве условий значением внутреннего массива.
- array
$typesнеобязательно [] - Ассоциативный массив полей, указывающий на тип значений, которые передаются. Используется для правильной привязки значений к утверждениям.
Возвращает
mixed$this
См. также
\Cake\Database\Query::where() для примеров условийaddCasesource 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
Возвращает
mixed$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\QueryExpression\Cake\Database\Expression\QueryExpression
betweensource public
between( mixed $field , mixed $from , mixed $to , string $type null )
Добавляет новое условие в объект выражения в виде «поле BETWEEN от И до».
Параметры
- mixed
$field - Имя поля для сравнения значений в заданном диапазоне.
- mixed
$from - Начальное значение диапазона.
- mixed
$to - Конечное значение в диапазоне сравнения.
- string
$typeнеобязательно null - Имя типа для $value, настроенное с помощью карты типов.
Возвращает
mixed$this
countsource public
count( )
Возвращает количество внутренних условий, хранящихся в этом выражении. Полезно для определения, является ли этот объект выражения пустым или он сгенерирует непустую строку при компиляции.
Возвращает
integerint
Реализация
Countable::count() eqsource public
eq( string $field , mixed $value , string $type null )
Добавляет новое условие в объект выражения в форме «поле = значение».
Параметры
- string
$field - Базовое поле, которое сравнивается со значением.
- mixed
$value - Значение, которое должно быть привязано к $field для сравнения
- string
$typeнеобязательно null - Имя типа для $value, настроенное с помощью карты типов. Если он завершается «[]» и значение является массивом, то будут созданы несколько заготовок, по одной на каждое значение в массиве.
Возвращает
mixed$this
gtsource public
gt( string $field , mixed $value , string $type null )
Добавляет новое условие к объекту выражения в форме "поле > значение".
Параметры
- строка
$field - Базовое поле, которое нужно сравнить со значением
- смешанное
$value - Значение, которое нужно связать с $field для сравнения
- строка
$typeнеобязательно null - имя типа для $value, как настроено с помощью Type map.
Возвращает
mixed$this
gtesource public
gte( string $field , mixed $value , string $type null )
Добавляет новое условие к объекту выражения в форме "поле >= значение".
Параметры
- строка
$field - Базовое поле, которое нужно сравнить со значением
- смешанное
$value - Значение, которое нужно связать с $field для сравнения
- строка
$typeнеобязательно null - имя типа для $value, как настроено с помощью Type map.
Возвращает
mixed$this
hasNestedExpressionsource public
hasNestedExpression( )
Возвращает true, если это выражение содержит другие вложенные объекты ExpressionInterface.
Возвращает
booleanbool
insource public
in( string $field , string|array $values , string $type null )
Добавляет новое условие к объекту выражения в форме "поле IN (значение1, значение2)".
Параметры
- строка
$field - Базовое поле, которое нужно сравнить со значением
- строка|массив
$values - значение, которое нужно связать с $field для сравнения
- строка
$typeнеобязательно null - имя типа для $value, как настроено с помощью Type map.
Возвращает
mixed$this
isCallablesource public
isCallable( callable $c )
Проверяет, является ли вызов допустимым.
Мы не принимаем вызовы типа ['класс', 'метод'], так как они часто содержат пользовательский ввод, а массивы строк легко подменить.
Параметры
- вызов
$c - Вызов для проверки.
Возвращает
booleanДопустимый вызов.
isNotNullsource public
isNotNull( string|Cake\Database\ExpressionInterface $field )
Добавляет новое условие к объекту выражения в форме "поле IS NOT NULL".
Параметры
- строка|
Cake\Database\ExpressionInterface$field - базовое поле, которое нужно проверить на не-null
Возвращает
mixed$this
isNullsource public
isNull( string|Cake\Database\ExpressionInterface $field )
Добавляет новое условие к объекту выражения в форме "поле IS NULL".
Параметры
- строка|
Cake\Database\ExpressionInterface$field - базовое поле, которое нужно проверить на null
Возвращает
mixed$this
iteratePartssource public
iterateParts( callable $callable )
Выполняет вызываемую функцию для каждой части, составляющей это выражение.
Вызываемая функция должна возвращать значение, с которым будет заменена текущая посещаемая часть. Если вызываемая функция возвращает null, то часть полностью удаляется из этого выражения.
Функция обратного вызова получит каждое из условий в качестве первого параметра и ключ во втором. Возможно объявить второй параметр как передаваемый по ссылке, это позволит вам изменить ключ, под которым хранится изменённая часть.
Параметры
- вызов
$callable - Вызов, применяемый к каждой части.
Возвращает
mixed$this
likesource public
like( string $field , mixed $value , string $type null )
Добавляет новое условие к объекту выражения в форме "поле LIKE значение".
Параметры
- строка
$field - Базовое поле, которое нужно сравнить со значением
- смешанное
$value - Значение, которое нужно связать с $field для сравнения
- строка
$typeнеобязательно null - имя типа для $value, как настроено с помощью Type map.
Возвращает
mixed$this
ltsource public
lt( string $field , mixed $value , string $type null )
Добавляет новое условие к объекту выражения в форме "поле < значение".
Параметры
- строка
$field - Базовое поле, которое нужно сравнить со значением
- смешанное
$value - Значение, которое нужно связать с $field для сравнения
- строка
$typeнеобязательно null - имя типа для $value, как настроено с помощью Type map.
Возвращает
mixed$this
ltesource public
lte( string $field , mixed $value , string $type null )
Добавляет новое условие к объекту выражения в форме "поле <= значение".
Параметры
- строка
$field - Базовое поле, которое нужно сравнить со значением
- смешанное
$value - Значение, которое нужно связать с $field для сравнения
- строка
$typeнеобязательно null - имя типа для $value, как настроено с помощью Type map.
Возвращает
mixed$this
notsource public
not( string|array|Cake\Database\Expression\QueryExpression $conditions , array $types [] )
Добавляет новый набор условий на этот уровень дерева и инвертирует конечный результат, добавив NOT. Выглядеть это будет так: "NOT ( (условие1) И (условия2) )" Конъюнкция зависит от текущей, настроенной для этого объекта.
Параметры
- строка|массив|
Cake\Database\Expression\QueryExpression$conditions - что добавить и инвертировать
- массив
$typesнеобязательно [] - ассоциативный массив полей, указывающий на тип значений, которые передаются. Используется для правильной привязки значений к заявлениям.
Возвращает
mixed$this
notEqsource public
notEq( string $field , mixed $value , string $type null )
Добавляет новое условие к объекту выражения в форме "поле != значение".
Параметры
- строка
$field - Базовое поле, которое нужно сравнить со значением
- смешанное
$value - Значение, которое нужно связать с $field для сравнения
- строка
$typeнеобязательно null - имя типа для $value, как настроено с помощью Type map. Если оно оканчивается на "[]" и значение является массивом, то будет создано несколько заглушек, по одной на каждое значение в массиве.
Возвращает
mixed$this
notInsource public
notIn( string $field , array $values , string $type null )
Добавляет новое условие к объекту выражения в форме "поле NOT IN (значение1, значение2)".
Параметры
- строка
$field - Базовое поле, которое нужно сравнить со значением
- массив
$values - значение, которое нужно связать с $field для сравнения
- строка
$typeнеобязательно null - имя типа для $value, как настроено с помощью Type map.
Возвращает
mixed$this
notLikesource public
notLike( string $field , mixed $value , string $type null )
Добавляет новое условие к объекту выражения в форме «поле НЕ РАВНО значению».
Параметры
- строка
$field - Поле базы данных, которое сравнивается со значением
- смешанное
$value - Значение, которое будет привязано к $field для сравнения
- строка
$typeнеобязательно null - имя типа для $value, как настроено с помощью TypeMap.
Возвращает
mixed$this
or_source public
or_( string|array|Cake\Database\Expression\QueryExpression $conditions , array $types [] )
Возвращает новый объект QueryExpression, содержащий все переданные условия и настроенный на связку «ИЛИ».
Параметры
- строка|массив|
Cake\Database\Expression\QueryExpression$conditions - для объединения с ИЛИ
- массив
$typesнеобязательно [] - ассоциативный массив полей, указывающий тип значений, которые передаются. Используется для правильной привязки значений к операторам.
Возвращает
Cake\Database\Expression\QueryExpression\Cake\Database\Expression\QueryExpression
sqlsource public
sql( Cake\Database\ValueBinder $generator )
Возвращает строковое представление этого объекта, которое можно использовать в запросе SQL. Обратите внимание, что значения условий не включены в строку, на их месте стоят заглушки, которые могут быть заменены соответствующими процитированными значениями.
Параметры
- Cake\Database\ValueBinder
$generator - Объект генератора заглушек
Возвращает
stringстрока
Реализация
Cake\Database\ExpressionInterface::sql() traversesource public
traverse( callable $callable )
Обходит древовидную структуру этого выражения запроса, выполняя функцию обратного вызова для каждого из условий, включенных в этот объект. Полезно для компиляции конечного выражения или для интроспекции структуры.
Функция обратного вызова получает в качестве единственного аргумента экземпляр QueryExpression
Параметры
- вызываемый объект
$callable - Вызываемый объект для применения ко всем подвыражениям.
Реализация
Cake\Database\ExpressionInterface::traverse() typesource public
type( string $conjunction null )
Изменяет связку для условий на этом уровне дерева выражений. Если вызвана без аргументов, вернёт текущее значение.
Параметры
- строка
$conjunctionнеобязательно null - значение, используемое для объединения условий. Если null, то не устанавливает значение, а возвращает сохранённое
Возвращает
string|$this$this
Методы, используемые из Cake\Database\TypeMapTrait
defaultTypessource public
defaultTypes( array $types null )
Позволяет устанавливать значения по умолчанию при цепочечном соединении запросов
Параметры
- массив
$typesнеобязательно null - Массив типов для установки.
Возвращает
mixed$this|массив
typeMapsource public
typeMap( array|TypeMap $typeMap null )
Создает новую TypeMap, если $typeMap является массивом, иначе возвращает существующую карту типов или меняет её на заданную.
Параметры
- массив|TypeMap
$typeMapнеобязательно null - Создает TypeMap, если массив, иначе устанавливает заданную TypeMap
Возвращает
mixed$this|TypeMap
Краткое описание свойств
Свойства, используемые из Cake\Database\TypeMapTrait
$_typeMapsource
protected Cake\Database\TypeMap
© 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.1/class-Cake.Database.Expression.QueryExpression.html