Класс 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. Каждое значение представляет истинное значение для условия с соответствующим ключом.
Краткое описание методов
- __construct() publicКонструктор выражения case
- _addExpressions() protected
Перебирает переданные условия и гарантирует, что для каждого из них есть соответствующее истинное значение. Если соответствующего истинного значения нет, то оно по умолчанию устанавливается в '1'.
- _compile() protectedКомпилирует необходимые части в SQL
- add() public
Добавляет одно или несколько условий и их соответствующие значения к объекту case. Условия должны быть одномерным массивом или объектом QueryExpression. Значения должны иметь похожую структуру, но могут содержать строковое значение.
- 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 )
Перебирает переданные условия и гарантирует, что для каждого из них есть соответствующее истинное значение. Если соответствующего истинного значения нет, то оно по умолчанию устанавливается в '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 = [] )
Добавляет одно или несколько условий и их соответствующие значения к объекту case. Условия должны быть одномерным массивом или объектом QueryExpression. Значения должны иметь похожую структуру, но могут содержать строковое значение.
Параметры
- массив|
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.6/class-Cake.Database.Expression.CaseExpression.html