Класс 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-функции, которая должна быть вызвана в этом выражении.
-
Устанавливает имя 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необязательно 'string' - Тип возвращаемого значения этого выражения
Переопределяет
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 deprecated
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_( callable|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, как настроено с помощью Type map.
Возвращает
$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, как настроено с помощью Type map. Если оно заканчивается на "[]" и значение является массивом, то будут созданы несколько заглушек, по одной для каждого значения в массиве.
Возвращает
$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, как настроено с помощью Type map.
Возвращает
$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, как настроено с помощью Type map.
Возвращает
$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, как настроено с помощью Type map.
Возвращает
$this
isCallable()source public
isCallable( callable $c )
Проверяет, является ли вызов функции допустимым.
Мы не принимаем вызовы типа ['class', 'method'], так как они часто содержат пользовательский ввод, а массивы строк легко внедрить.
Параметры
- вызов функции
$c - Вызов функции для проверки.
Возвращает
booleanДопустимый вызов функции.
isNotNull()source public
isNotNull( string|Cake\Database\ExpressionInterface $field )
Добавляет новое условие к объекту выражения в виде «поле НЕ NULL».
Параметры
- строка|
Cake\Database\ExpressionInterface$field поле базы данных, которое нужно проверить на непустоту
Возвращаемое значение
$this
isNull()source public
isNull( string|Cake\Database\ExpressionInterface $field )
Добавляет новое условие к объекту выражения в виде «поле IS NULL».
Параметры
- строка|
Cake\Database\ExpressionInterface$field поле базы данных, которое нужно проверить на пустоту
Возвращаемое значение
$this
iterateParts()source public
iterateParts( callable $callable )
Выполняет функцию обратного вызова для каждой из частей, которые формируют это выражение.
Функция обратного вызова должна возвращать значение, которое будет использовано для замены текущей посещаемой части. Если функция обратного вызова возвращает null, то часть полностью удаляется из этого выражения.
Функция обратного вызова получит каждое из условий в качестве первого параметра и ключ в качестве второго. Можно объявить второй параметр как передаваемый по ссылке, это позволит изменить ключ, под которым хранится измененная часть.
Параметры
- функция обратного вызова
$callable - Функция обратного вызова, которая применяется к каждой части.
Возвращаемое значение
$this
like()source public
like( string|Cake\Database\ExpressionInterface $field , mixed $value , string|null $type = null )
Добавляет новое условие к объекту выражения в виде «поле LIKE значение».
Параметры
- строка|
Cake\Database\ExpressionInterface$field - Поле базы данных, которое сравнивается со значением
- смешанное
$value - Значение, которое должно быть привязано к $field для сравнения
- строка|null
$typeдополнительно null - Имя типа для $value, как настроено с помощью карты типов.
Возвращаемое значение
$this
lt()source public
lt( string|Cake\Database\ExpressionInterface $field , mixed $value , string|null $type = null )
Добавляет новое условие к объекту выражения в виде «поле < значение».
Параметры
- строка|
Cake\Database\ExpressionInterface$field - Поле базы данных, которое сравнивается со значением
- смешанное
$value - Значение, которое должно быть привязано к $field для сравнения
- строка|null
$typeдополнительно null - Имя типа для $value, как настроено с помощью карты типов.
Возвращаемое значение
$this
lte()source public
lte( string|Cake\Database\ExpressionInterface $field , mixed $value , string|null $type = null )
Добавляет новое условие к объекту выражения в виде «поле <= значение».
Параметры
- строка|
Cake\Database\ExpressionInterface$field - Поле базы данных, которое сравнивается со значением
- смешанное
$value - Значение, которое должно быть привязано к $field для сравнения
- строка|null
$typeдополнительно null - Имя типа для $value, как настроено с помощью карты типов.
Возвращаемое значение
$this
not()source public
not( string|array|Cake\Database\ExpressionInterface $conditions , array $types = [] )
Добавляет новый набор условий к этому уровню дерева и инвертирует итоговый результат, добавив NOT, это будет выглядеть как «NOT ( (условие1) И (условия2) )» конъюнкция зависит от текущей, настроенной для этого объекта.
Параметры
- строка|массив|
Cake\Database\ExpressionInterface$conditions - для добавления и инвертирования
- массив
$typesдополнительно [] ассоциативный массив полей, указывающих на тип значений, которые передаются. Используется для правильной привязки значений к операторам.
Возвращаемое значение
$this
notEq()source public
notEq( string|Cake\Database\ExpressionInterface $field , mixed $value , string|null $type = null )
Добавляет новое условие к объекту выражения в виде «поле != значение».
Параметры
- строка|
Cake\Database\ExpressionInterface$field - Поле базы данных, которое сравнивается со значением
- смешанное
$value - Значение, которое должно быть привязано к $field для сравнения
- строка|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)».
Параметры
- строка|
Cake\Database\ExpressionInterface$field - Поле базы данных, которое сравнивается со значением
- массив
$values - значение, которое должно быть привязано к $field для сравнения
- строка|null
$typeдополнительно null - Имя типа для $value, как настроено с помощью карты типов.
Возвращаемое значение
$this
notLike()source public
notLike( string|Cake\Database\ExpressionInterface $field , mixed $value , string|null $type = null )
Добавляет новое условие к объекту выражения в виде «поле НЕ LIKE значение».
Параметры
- строка|
Cake\Database\ExpressionInterface$field - Поле базы данных, которое сравнивается со значением
- смешанное
$value - Значение, которое должно быть привязано к $field для сравнения
- строка|null
$typeдополнительно null - Имя типа для $value, как настроено с помощью карты типов.
Возвращаемое значение
$this
or_()source public
or_( callable|string|array|Cake\Database\ExpressionInterface $conditions , array $types = [] )
Возвращает новый объект QueryExpression, содержащий все переданные условия и устанавливает конъюнкцию в «ИЛИ»
Параметры
- функция обратного вызова|строка|массив|
Cake\Database\ExpressionInterface$conditions - для объединения с ИЛИ
- массив
$typesдополнительно [] ассоциативный массив полей, указывающих на тип значений, которые передаются. Используется для правильной привязки значений к операторам.
Возвращаемое значение
Cake\Database\Expression\QueryExpressionsetConjunction()source public
setConjunction( string $conjunction )
Изменяет конъюнкцию для условий на данном уровне дерева выражения.
Параметры
- строка
$conjunction - Значение, используемое для объединения условий
Возвращаемое значение
$this
tieWith()source public deprecated
tieWith( string|null $conjunction = null )
Изменяет конъюнкцию для условий на данном уровне дерева выражения. Если вызывается без аргументов, то вернет текущее значение.
Устарело
3.4.0 Используйте setConjunction()/getConjunction() вместо этого.Параметры
- строка|null
$conjunctionдополнительно null значение, которое нужно использовать для объединения условий. Если null, то не установит никакое значение, а вернет текущее хранящееся
Возвращаемое значение
строка|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\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 deprecated
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 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, если $typeMap является массивом, иначе меняет её на заданную.
Параметры
- array|
Cake\Database\TypeMap$typeMap - Создаёт TypeMap, если массив, иначе устанавливает заданную TypeMap
Возвращает
$this
typeMap()source public deprecated
typeMap( array|Cake\Database\TypeMap|null $typeMap = null )
Создаёт новую TypeMap, если $typeMap является массивом, иначе возвращает существующую карту типов или меняет её на заданную.
Устаревшее
3.4.0 Используйте setTypeMap()/getTypeMap() вместо этого.Параметры
- array|
Cake\Database\TypeMap|null$typeMapнеобязательно null - Создаёт TypeMap, если массив, иначе устанавливает заданную TypeMap
Возвращает
$this|\Cake\Database\TypeMap
Магические методы, унаследованные от Cake\Database\TypedResultInterface
getReturnType() |
Подробное описание свойств
© 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.8/class-Cake.Database.Expression.FunctionExpression.html