Spec-Zone.ru › CakePHP 3.8

Класс 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
Пространство имён: Cake\Database\Expression
Расположение: Database/Expression/FunctionExpression.php

Краткое описание свойств

  • $_name protected
    string
    Имя функции, которая будет построена при генерации SQL-строки

Унаследованные свойства

  • _conditions, _conjunction _typeMap _returnType

Краткое описание методов

  • __construct() public

    Конструктор. Принимает имя вызываемой функции и список параметров, передаваемых в функцию. Необязательно, можно передать список типов, используемых для каждого связанного параметра.

  • add() public
    Добавляет один или несколько аргументов для вызова функции.
  • count() public

    Имя функции само по себе является выражением для генерации, поэтому всегда добавляет 1 к количеству выражений, хранящихся в этом объекте.

  • getName() public
    Получает имя SQL-функции, которая должна быть вызвана в этом выражении.
  • name() public deprecated

    Устанавливает имя 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

__clone()source public

__clone( )

Клонировать этот объект и его поддерево выражений.

_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\ExpressionInterface

addCase()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\QueryExpression

between()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.

Возвращает

boolean

in()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
Допустимый вызов функции.
END_OF_DOCUMENT_MARKER

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\QueryExpression

setConjunction()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( )

Получает тип значения, которое сгенерирует этот объект.

Возвращает

string

returnType()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( )

Получает типы по умолчанию текущей карты типов.

Возвращает

array

getTypeMap()source public

getTypeMap( )

Возвращает существующую карту типов.

Возвращает

Cake\Database\TypeMap

setDefaultTypes()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()

Подробное описание свойств

$_namesource

protected string

Имя функции, которая должна быть построена при генерации строки SQL

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API