Класс CaseExpression
Этот класс представляет оператор SQL Case.
- Cake\Database\Expression\CaseExpression реализует Cake\Database\ExpressionInterface использует Cake\Database\Type\ExpressionTypeCasterTrait
Краткое описание свойств
-
$_conditionsprotectedarrayСписок строк или других объектов выражений, представляющих условия оператора case. Например, один ключ массива может выглядеть как "sum > :value".
-
$_elseValueprotectedЗначение по умолчанию для оператора case. Если null, то значение по умолчанию не будет включено.string|Cake\Database\ExpressionInterface|array|null -
$_valuesprotectedarrayЗначения, связанные с условиями в массиве $_conditions. Каждое значение представляет значение "true" для соответствующего ключа.
Краткое описание методов
- __construct() publicКонструктор выражения case
- _addExpressions() protected
Перебирает переданные условия и проверяет, что для каждого условия есть соответствующее значение true. Если соответствующего значения true нет, оно устанавливается по умолчанию в '1'.
- _compile() protectedКомпилирует соответствующие части в SQL
- add() public
Добавляет одно или несколько условий и их соответствующие значения true к объекту case. Условия должны быть одномерным массивом или объектом QueryExpression. Значения true должны иметь аналогичную структуру, но могут содержать строковое значение.
- elseValue() publicУстанавливает значение по умолчанию
- sql() publicПреобразует узел в фрагмент SQL-строки.
- traverse() public
Рекурсивно перебирает каждую часть выражения на каждом уровне дерева выражений и выполняет вызываемый объект $visitor, передавая в качестве первого параметра экземпляр выражения, который в данный момент обрабатывается.
Подробное описание методов
__construct()source public
__construct( 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 используется как значение по умолчанию.
- массив
$typesнеобязательно [] ассоциативный массив типов, которые будут связаны со значениями, переданными в $values
_addExpressions()source protected
_addExpressions( array|Cake\Database\ExpressionInterface $conditions , array|Cake\Database\ExpressionInterface $values , array $types )
Перебирает переданные условия и проверяет, что для каждого условия есть соответствующее значение true. Если соответствующего значения true нет, оно устанавливается по умолчанию в '1'.
Параметры
- массив|
Cake\Database\ExpressionInterface$conditions - Должен быть экземпляром ExpressionInterface или массивом экземпляров ExpressionInterface.
- массив|
Cake\Database\ExpressionInterface$values - ассоциативный массив значений каждого условия
- массив
$types - ассоциативный массив типов, которые будут связаны со значениями
_compile()source protected
_compile( array|string|Cake\Database\ExpressionInterface $part , Cake\Database\ValueBinder $generator )
Компилирует соответствующие части в SQL
Параметры
- массив|строка|
Cake\Database\ExpressionInterface$part - Часть для компиляции
- Cake\Database\ValueBinder
$generator - Генератор SQL
Возвращает
строкаadd()source public
add( array|Cake\Database\ExpressionInterface $conditions = [] , array|Cake\Database\ExpressionInterface $values = [] , array $types = [] )
Добавляет одно или несколько условий и их соответствующие значения true к объекту case. Условия должны быть одномерным массивом или объектом QueryExpression. Значения true должны иметь аналогичную структуру, но могут содержать строковое значение.
Параметры
- массив|
Cake\Database\ExpressionInterface$conditionsнеобязательно [] - Должен быть экземпляром ExpressionInterface или массивом экземпляров ExpressionInterface.
- массив|
Cake\Database\ExpressionInterface$valuesнеобязательно [] - ассоциативный массив значений каждого условия
- массив
$typesнеобязательно [] - ассоциативный массив типов, которые будут связаны со значениями
Возвращает
$this
elseValue()source public
elseValue( Cake\Database\ExpressionInterface|string|array|null $value = null , string|null $type = null )
Устанавливает значение по умолчанию
Параметры
-
Cake\Database\ExpressionInterface|строка|массив|null$valueнеобязательно null - Значение для установки
- строка|null
$typeнеобязательно null - Тип значения
sql()source public
sql( Cake\Database\ValueBinder $generator )
Преобразует узел в фрагмент SQL-строки.
Параметры
- Cake\Database\ValueBinder
$generator - Объект генератора заполнителей
Возвращает
строкаРеализация
Cake\Database\ExpressionInterface::sql() traverse()source public
traverse( callable $visitor )
Рекурсивно перебирает каждую часть выражения на каждом уровне дерева выражений и выполняет вызываемый объект $visitor, передавая в качестве первого параметра экземпляр выражения, который в данный момент обрабатывается.
Параметры
- вызываемый объект
$visitor - Вызываемый объект, который нужно применить ко всем узлам.
Реализация
Cake\Database\ExpressionInterface::traverse() Методы, используемые из Cake\Database\Type\ExpressionTypeCasterTrait
_castToExpression()source protected
_castToExpression( mixed $value , string $type )
Условно преобразует переданное значение в объект ExpressionInterface, если класс типа реализует интерфейс ExpressionTypeInterface. В противном случае возвращает значение без изменений.
Параметры
- смешанный
$value - Значение, которое нужно преобразовать в ExpressionInterface
- строка
$type - Имя типа
Возвращает
смешанный_requiresToExpressionCasting()source protected
_requiresToExpressionCasting( array $types )
Возвращает массив с типами, для которых значения необходимо преобразовать в выражения, из списка имен типов, переданных в качестве параметра.
Параметры
- массив
$types - Список имен типов
Возвращает
массивПодробное описание свойств
$_conditionssource
protected массив
Список строк или других объектов выражений, представляющих условия оператора case. Например, один ключ массива может выглядеть как "sum > :value".
[]
$_elseValuesource
protected строка|Cake\Database\ExpressionInterface|массив|null
Значение ELSE для оператора case. Если null, то ELSE не будет включено.
$_valuessource
protected массив
Значения, связанные с условиями в массиве $_conditions. Каждое значение представляет собой значение 'true' для условия с соответствующим ключом.
[]
© 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.CaseExpression.html