Класс WhenThenExpression
Представляет условие SQL when/then с гибким API
Краткое описание свойств
- $_typeMap protected
Cake\Database\TypeMapКарта типов для использования при использовании массива условий для значения
WHEN. - $hasThenBeenDefined protected
boolУказывает, было ли определено значение
THEN, например, был ли вызванthen(). - $then protected
Cake\Database\ExpressionInterface|object|scalar|nullЗначение
THEN. - $thenType protected
string|nullТип результата
THEN. - $validClauseNames protected
array<string>Имена условий, допустимые для использования с методом
clause(). - $when protected
Cake\Database\ExpressionInterface|object|scalar|nullЗначение
WHEN. - $whenType protected
array|string|nullТип значения
WHEN.
Краткое описание методов
-
__clone() public
Клонирует внутренние объекты выражения.
-
__construct() public
Конструктор.
-
_castToExpression() protected
Условно преобразует переданное значение в объект ExpressionInterface, если класс типа реализует ExpressionTypeInterface. В противном случае возвращает значение без изменений.
-
_requiresToExpressionCasting() protected
Возвращает массив типов, для которых значения должны быть преобразованы в выражения, из списка имен типов, переданных в качестве параметра.
-
clause() public
Возвращает доступные данные для данного условия.
-
compileNullableValue() protected
Компилирует значение null в SQL.
-
getResultType() public
Возвращает тип результата выражения.
-
inferType() protected
Определяет абстрактный тип для данного значения.
-
sql() public
Преобразует узел в фрагмент SQL-строки.
-
then() public
Устанавливает значение результата
THEN. -
traverse() public
Итерируется по каждой части выражения рекурсивно для каждого уровня дерева выражений и выполняет вызываемый объект $callback, передавая в качестве первого параметра экземпляр выражения, по которому в данный момент выполняется итерация.
-
when() public
Устанавливает значение
WHEN.
Подробное описание методов
__clone() public
__clone(): void
Клонирует внутренние объекты выражения.
Возвращает
void__construct() public
__construct(Cake\Database\TypeMap|null $typeMap = null)
Конструктор.
Параметры
-
Cake\Database\TypeMap|null$typeMap optional Карта типов, используемая при использовании массива условий для значения
WHEN.
_castToExpression() protected
_castToExpression(mixed $value, string|null $type = null): mixed
Условно преобразует переданное значение в объект ExpressionInterface, если класс типа реализует ExpressionTypeInterface. В противном случае возвращает значение без изменений.
Параметры
-
mixed$value Значение для преобразования в ExpressionInterface
-
string|null$type optional Имя типа
Возвращает
mixed_requiresToExpressionCasting() protected
_requiresToExpressionCasting(array $types): array
Возвращает массив типов, для которых значения должны быть преобразованы в выражения, из списка имен типов, переданных в качестве параметра.
Параметры
-
array$types Список имен типов
Возвращает
arrayclause() public
clause(string $clause): Cake\Database\ExpressionInterface|object|scalar|null
Возвращает доступные данные для данного условия.
Доступные условия
Доступны следующие имена условий:
-
when: ЗначениеWHEN. -
then: Значение результатаTHEN.
Параметры
-
string$clause Имя условия, которое нужно получить.
Возвращает
Cake\Database\ExpressionInterface|object|scalar|nullИсключения
InvalidArgumentExceptionВ случае, если имя переданного условия некорректно.
compileNullableValue() protected
compileNullableValue(Cake\Database\ValueBinder $binder, Cake\Database\ExpressionInterface|object|scalar|null $value, string|null $type = null): string
Компилирует значение null в SQL.
Параметры
-
Cake\Database\ValueBinder$binder Используемый связующий объект значения.
-
Cake\Database\ExpressionInterface|object|scalar|null$value Значение для компиляции.
-
string|null$type optional Тип значения.
Возвращает
stringgetResultType() public
getResultType(): string|null
Возвращает тип результата выражения.
Возвращает
string|nullСм. также
inferType() protected
inferType(mixed $value): string|null
Определяет абстрактный тип для данного значения.
Параметры
-
mixed$value Значение, для которого необходимо определить тип.
Возвращает
string|nullsql() public
sql(Cake\Database\ValueBinder $binder): string
Преобразует узел в фрагмент SQL-строки.
Параметры
-
Cake\Database\ValueBinder$binder
Возвращает
stringthen() public
then(Cake\Database\ExpressionInterface|object|scalar|null $result, string|null $type = null): $this
Устанавливает значение результата THEN.
Параметры
-
Cake\Database\ExpressionInterface|object|scalar|null$result Значение результата.
-
string|null$type optional Тип результата. Если тип не указан, он будет определён из переданного значения результата.
Возвращает
$thistraverse() public
traverse(Closure $callback): $this
Итерируется по каждой части выражения рекурсивно для каждого уровня дерева выражений и выполняет вызываемый объект $callback, передавая в качестве первого параметра экземпляр выражения, по которому в данный момент выполняется итерация.
Параметры
-
Closure$callback
Возвращает
$thiswhen() public
when(Cake\Database\ExpressionInterface|object|array|scalar $when, array<string, string>|string|null $type = null): $this
Устанавливает значение WHEN.
Параметры
-
Cake\Database\ExpressionInterface|object|array|scalar$when Значение
WHEN. При использовании массива условий, оно должно быть совместимо с\Cake\Database\Query::where(). Обратите внимание, что этот аргумент не полностью безопасен для использования с пользовательскими данными, так как пользовательский массив может позволить просочиться необработанному SQL! Если планируется использовать пользовательские данные, либо передайте один тип для аргумента$type(что заставляет значение$whenбыть не массивом, и тогда всегда привязывает данные), используйте массив условий, где пользовательские данные передаются только со стороны значения записей массива, или используйте пользовательские привязки!-
array<string, string>|string|null$type optional Тип значения when. Либо ассоциативный массив при использовании условий в стиле массива, либо строка. Если тип не указан, будет попытка определения типа из значения.
Возвращает
$thisИсключения
InvalidArgumentExceptionВ случае, если аргумент `$when` не является непустым массивом, ни скалярным значением, объектом, или экземпляром `\Cake\Database\ExpressionInterface`.
InvalidArgumentExceptionВ случае, если аргумент `$type` не является массивом, строкой, или null.
InvalidArgumentExceptionВ случае, если аргумент `$when` является массивом, а аргумент `$type` не является массивом или null.
InvalidArgumentExceptionВ случае, если аргумент `$when` имеет значение не являющееся массивом, а аргумент `$type` не является строкой или null.
См. также
Подробное описание свойств
$_typeMap protected
Карта типов, используемая при использовании массива условий для значения WHEN.
Тип
Cake\Database\TypeMap$hasThenBeenDefined protected
Указывает, было ли определено значение THEN, например, был ли вызван then().
Тип
bool$then protected
Значение THEN.
Тип
Cake\Database\ExpressionInterface|object|scalar|null$thenType protected
Тип результата THEN.
Тип
string|null$validClauseNames protected
Названия условий, допустимые для использования с методом clause().
Тип
array<string>$when protected
Значение WHEN.
Тип
Cake\Database\ExpressionInterface|object|scalar|null$whenType protected
Тип значения WHEN.
Тип
array|string|null
© 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/4.3/class-Cake.Database.Expression.WhenThenExpression.html