Spec-Zone.ru › CakePHP 4.3

Класс WhenThenExpression

Представляет условие SQL when/then с гибким API

Пространство имён: Cake\Database\Expression

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

  • $_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

Список имен типов

Возвращает

array

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

Тип значения.

Возвращает

string

getResultType() public

getResultType(): string|null

Возвращает тип результата выражения.

Возвращает

string|null

См. также

WhenThenExpression::then()

inferType() protected

inferType(mixed $value): string|null

Определяет абстрактный тип для данного значения.

Параметры

mixed $value

Значение, для которого необходимо определить тип.

Возвращает

string|null

sql() public

sql(Cake\Database\ValueBinder $binder): string

Преобразует узел в фрагмент SQL-строки.

Параметры

Cake\Database\ValueBinder $binder

Возвращает

string

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

Тип результата. Если тип не указан, он будет определён из переданного значения результата.

Возвращает

$this

traverse() public

traverse(Closure $callback): $this

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

Параметры

Closure $callback

Возвращает

$this

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

См. также

CaseStatementExpression::when() для более подробного объяснения использования.

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

$_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

Spec-Zone.ru

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