Класс FunctionExpression
Этот класс представляет строку вызова функции в SQL-запросе. Вызовы можно создавать, передавая имя функции и список параметров. По соображениям безопасности, все передаваемые параметры по умолчанию заключаются в кавычки, если не указано иное.
- Cake\Database\Expression\QueryExpression реализует Cake\Database\ExpressionInterface, Countable использует Cake\Database\TypeMapTrait
-
Cake\Database\Expression\FunctionExpression реализует Cake\Database\TypedResultInterface использует Cake\Database\Type\ExpressionTypeCasterTrait , Cake\Database\TypedResultTrait
Расположение: Database/Expression/FunctionExpression.php
Краткое описание свойств
-
$_nameprotectedИмя функции, которая будет создана при генерации SQL-строкиstring
Унаследованные свойства
Краткое описание методов
- __construct() public
Конструктор. Принимает имя вызываемой функции и список параметров, которые будут переданы в функцию. Дополнительно можно передать список типов, которые будут использоваться для каждого связанного параметра.
- add() publicДобавляет один или несколько аргументов для вызова функции.
- count() public
Имя функции само по себе является выражением для генерации, поэтому всегда добавляет 1 к количеству выражений, хранящихся в этом объекте.
- getName() publicПолучает имя SQL-функции, которая должна быть вызвана в этом выражении.
- name() public
Устанавливает имя SQL-функции, которая должна быть вызвана в этом выражении. Если значение не передано, возвращает текущее имя.
- setName() publicУстанавливает имя SQL-функции, которая должна быть вызвана в этом выражении.
- sql() public
Возвращает строковое представление этого объекта, чтобы его можно было использовать в SQL-запросе. Обратите внимание, что значения условий не включены в строку, вместо них вставлены заглушки, которые могут быть заменены соответствующими значениями в кавычках.
Подробное описание методов
__construct()source public
__construct( string $name , array $params [] , array $types [] , string $returnType 'string' )
Конструктор. Принимает имя вызываемой функции и список параметров, которые будут переданы в функцию. Дополнительно можно передать список типов, которые будут использоваться для каждого связанного параметра.
По умолчанию все передаваемые параметры будут заключены в кавычки. Если вы хотите использовать литеральные аргументы, необходимо явно указать это функции.
Примеры:
$f = new FunctionExpression('CONCAT', ['CakePHP', ' rules']);
Предыдущая строка сгенерирует CONCAT('CakePHP', ' rules')
$f = new FunctionExpression('CONCAT', ['name' => 'literal', ' rules']);
Это даст CONCAT(name, ' rules')
Параметры
- строка
$name - имя функции, которая должна быть создана
- массив
$paramsнеобязательно [] список аргументов, которые должны быть переданы функции. Если ассоциативный, ключ будет использоваться как аргумент, когда значение равно 'литеральному'
- массив
$typesнеобязательно [] ассоциативный массив типов, которые должны быть связаны с переданными аргументами
- строка
$returnTypeнеобязательно 'строка' - Тип возвращаемого значения этого выражения
Переопределяет
Cake\Database\Expression\QueryExpression::__construct() add()source public
add( array $params , array $types [] , boolean $prepend false )
Добавляет один или несколько аргументов для вызова функции.
Параметры
- массив
$params список аргументов, которые должны быть переданы функции. Если ассоциативный, ключ будет использоваться как аргумент, когда значение равно 'литеральному'
- массив
$typesнеобязательно [] ассоциативный массив типов, которые должны быть связаны с переданными аргументами
- логическое значение
$prependнеобязательно false - Добавлять перед или после списка аргументов
Возвращает
$this
См. также
\Cake\Database\Expression\FunctionExpression::__construct() для получения дополнительной информации.Переопределяет
Cake\Database\Expression\QueryExpression::add() count()source public
count( )
Имя функции само по себе является выражением для генерации, поэтому всегда добавляет 1 к количеству выражений, хранящихся в этом объекте.
Возвращает
целое числоПереопределяет
Cake\Database\Expression\QueryExpression::count() getName()source public
getName( )
Получает имя SQL-функции, которая должна быть вызвана в этом выражении.
Возвращает
строкаname()source public
name( string|null $name null )
Устанавливает имя SQL-функции, которая должна быть вызвана в этом выражении. Если значение не передано, возвращает текущее имя.
Устарело
3.4.0 Используйте setName()/getName() вместо этого.Параметры
- строка|null
$nameнеобязательно null - Имя функции
Возвращает
строка|Cake\Database\Expression\FunctionExpression$this
setName()source public
setName( string $name )
Устанавливает имя SQL-функции, которая должна быть вызвана в этом выражении.
Параметры
- строка
$name - Имя функции
Возвращает
$this
sql()source public
sql( Cake\Database\ValueBinder $generator )
Возвращает строковое представление этого объекта, чтобы его можно было использовать в SQL-запросе. Обратите внимание, что значения условий не включены в строку, вместо них вставлены заглушки, которые могут быть заменены соответствующими значениями в кавычках.
Параметры
- Cake\Database\ValueBinder
$generator - Объект генератора заглушек
Возвращает
строкаПереопределяет
Cake\Database\Expression\QueryExpression::sql() Методы, унаследованные от Cake\Database\Expression\QueryExpression
__call()source public
__call( string $method , array $args )
Помогает вызывать методы and() и or() прозрачно.
Параметры
- строка
$method - Имя метода.
- массив
$args - Аргументы, которые нужно передать методу.
Возвращает
Cake\Database\Expression\QueryExpressionВыбрасывает
BadMethodCallException_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\ExpressionInterfaceaddCase()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необязательно [] ассоциативный массив значений, которые будут связаны с условиями, переданными в $conditions. Если значений $values больше, чем условий $conditions, последнее значение $value используется в качестве значения
ELSE- массив
$typesнеобязательно [] ассоциативный массив типов, которые будут связаны со значениями, переданными в $values
Возвращаемое значение
$this
and_()source public
and_( string|array|Cake\Database\ExpressionInterface $conditions , array $types [] )
Возвращает новый объект QueryExpression, содержащий все переданные условия и устанавливает конъюнкцию в «И»
Параметры
- строка|массив|
Cake\Database\ExpressionInterface$conditions - для объединения с И
- массив
$typesнеобязательно [] ассоциативный массив полей, указывающий на тип значений, которые передаются. Используется для правильной привязки значений к операторам.
Возвращаемое значение
Cake\Database\Expression\QueryExpressionbetween()source public
between( string|Cake\Database\ExpressionInterface $field , mixed $from , mixed $to , string|null $type null )
Добавляет новое условие в объект выражения в виде «поле МЕЖДУ от И до».
Параметры
- строка|
Cake\Database\ExpressionInterface$field - Имя поля, которое нужно сравнить для значений в диапазоне.
- смешанное
$from - Начальное значение диапазона.
- смешанное
$to - Конечное значение в диапазоне сравнения.
- строка|null
$typeнеобязательно null - имя типа для $value, как настроено с помощью карты типов.
Возвращаемое значение
$this
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 )
Добавляет новое условие в объект выражения в виде «СУЩЕСТВУЕТ (...)».
Параметры
-
Cake\Database\ExpressionInterface$query - внутренний запрос
Возвращаемое значение
$this
getConjunction()source public
getConjunction( )
Получает текущую конъюнкцию, настроенную для условий на данном уровне дерева выражения.
Возвращаемое значение
строкаgt()source public
gt( string|Cake\Database\ExpressionInterface $field , mixed $value , string|null $type null )
Добавляет новое условие в объект выражения в виде «поле > значение».
Параметры
- строка|
Cake\Database\ExpressionInterface$field - Базовое поле, которое нужно сравнить со значением
- смешанное
$value - Значение, которое должно быть привязано к $field для сравнения
- строка|null
$typeнеобязательно null - имя типа для $value, как настроено с помощью карты типов.
Возвращаемое значение
$this
gte()source public
gte( string|Cake\Database\ExpressionInterface $field , mixed $value , string|null $type null )
Добавляет новое условие в объект выражения в виде «поле >= значение».
Параметры
- строка|
Cake\Database\ExpressionInterface$field - Базовое поле, которое нужно сравнить со значением
- смешанное
$value - Значение, которое должно быть привязано к $field для сравнения
- строка|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 )
Добавляет новое условие в объект выражения в виде «поле В (значение1, значение2)».
Параметры
- строка|
Cake\Database\ExpressionInterface$field - Базовое поле, которое нужно сравнить со значением
- строка|массив
$values - значение, которое нужно привязать к $field для сравнения
- строка|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 )
Добавляет новое условие в объект выражения в форме "поле НЕ 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, будет выглядеть как "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 )
Добавляет новое условие в объект выражения в форме "NOT EXISTS (...)".
Параметры
-
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, как сконфигурировано в Type map.
Возвращаемое значение
$this
notLike()source public
notLike( 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
or_()source public
or_( string|array|Cake\Database\ExpressionInterface $conditions , array $types [] )
Возвращает новый объект QueryExpression, содержащий все переданные условия, и устанавливает конъюнкцию в "ИЛИ".
Параметры
- string|array|
Cake\Database\ExpressionInterface$conditions - для объединения с ИЛИ
- array
$typesнеобязательно [] Ассоциативный массив полей, указывающий на тип значений, которые передаются. Используется для правильной привязки значений к операторам.
Возвращаемое значение
Cake\Database\Expression\QueryExpressionsetConjunction()source public
setConjunction( string $conjunction )
Изменяет конъюнкцию для условий на данном уровне дерева выражения.
Параметры
- string
$conjunction - Значение, используемое для объединения условий
Возвращаемое значение
$this
tieWith()source public
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 )
Проходит по структуре дерева этого выражения запроса, выполняя функцию обратного вызова для каждого из условий, включенных в этот объект. Полезно для компиляции конечного выражения или интроспекции структуры.
Функция обратного вызова получает в качестве единственного аргумента экземпляр QueryExpression
Параметры
- callable
$callable - Функция обратного вызова, применяемая ко всем подвыражениям.
Реализация
Cake\Database\ExpressionInterface::traverse() type()source public
type( string|null $conjunction null )
Обратная совместимая обёртка для tieWith()
Устарело
3.2.0 Используйте tieWith() вместо этогоПараметры
- string|null
$conjunctionнеобязательно null Значение, используемое для объединения условий. Если null, не устанавливает значение, а возвращает текущее сохранённое значение.
Возвращает
string|Cake\Database\Expression\QueryExpression$this
Методы, используемые из Cake\Database\Type\ExpressionTypeCasterTrait
_castToExpression()source protected
_castToExpression( mixed $value , string $type )
Условно преобразует переданное значение в объект ExpressionInterface, если класс типа реализует ExpressionTypeInterface. В противном случае возвращает значение без изменений.
Параметры
- mixed
$value - Значение для преобразования в ExpressionInterface
- string
$type - Имя типа
Возвращает
mixed_requiresToExpressionCasting()source protected
_requiresToExpressionCasting( array $types )
Возвращает массив с типами, требующими преобразования значений в выражения, из списка имён типов, переданных в качестве параметра.
Параметры
- array
$types - Список имён типов
Возвращает
arrayМетоды, используемые из Cake\Database\TypedResultTrait
getReturnType()source public
getReturnType( )
Получает тип значения, который сгенерирует этот объект.
Возвращает
stringreturnType()source public
returnType( string|null $type null )
Устанавливает тип значения, который сгенерирует этот объект. Если вызывается без аргументов, возвращает текущий известный тип.
Устарело
3.5.0 Используйте getReturnType()/setReturnType() вместо этого.Параметры
- string|null
$typeнеобязательно null - Имя типа, который должен быть возвращен.
Возвращает
string|Cake\Database\TypedResultTrait$this
setReturnType()source public
setReturnType( string $type )
Устанавливает тип значения, который сгенерирует этот объект.
Параметры
- string
$type - Имя типа, который должен быть возвращен.
Возвращает
$this
Методы, используемые из Cake\Database\TypeMapTrait
defaultTypes()source public
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 )
Позволяет установить значения по умолчанию для типов при цепочечном запросе.
Параметры
- array
$types - Массив типов для установки.
Возвращает
$this
setTypeMap()source public
setTypeMap( array|Cake\Database\TypeMap $typeMap )
Создаёт новую карту типов, если $typeMap — массив, иначе меняет её на переданную.
Параметры
- array|
Cake\Database\TypeMap$typeMap - Создаёт карту типов, если массив, иначе устанавливает переданную карту типов
Возвращает
$this
typeMap()source public
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
Магические методы, унаследованные от Cake\Database\TypedResultInterface
getReturnType() |
Подробное описание свойств
© 2005–2017 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.4/class-Cake.Database.Expression.FunctionExpression.html