On this page
Class
CaseExpression
This class represents a SQL Case statement
Deprecated: 4.3.0 Use QueryExpression::case() or CaseStatementExpression instead
Property Summary
-
$_conditions protected
array
A list of strings or other expression objects that represent the conditions of the case statement. For example one key of the array might look like "sum > :value"
-
$_elseValue protected
Cake\Database\ExpressionInterface|array|string|null
The
ELSE
value for the case statement. If null then noELSE
will be included. -
$_values protected
array
Values that are associated with the conditions in the $_conditions array. Each value represents the 'true' value for the condition with the corresponding key.
Method Summary
__construct() public
Constructs the case expression
_addExpressions() protected
Iterates over the passed in conditions and ensures that there is a matching true value for each. If no matching true value, then it is defaulted to '1'.
_castToExpression() protected
Conditionally converts the passed value to an ExpressionInterface object if the type class implements the ExpressionTypeInterface. Otherwise, returns the value unmodified.
_compile() protected
Compiles the relevant parts into sql
_requiresToExpressionCasting() protected
Returns an array with the types that require values to be casted to expressions, out of the list of type names passed as parameter.
add() public
Adds one or more conditions and their respective true values to the case object. Conditions must be a one dimensional array or a QueryExpression. The trueValues must be a similar structure, but may contain a string value.
elseValue() public
Sets the default value
sql() public
Converts the Node into a SQL string fragment.
traverse() public
Iterates over each part of the expression recursively for every level of the expressions tree and executes the $callback callable passing as first parameter the instance of the expression currently being iterated.
Method Detail
__construct() public
__construct(Cake\Database\ExpressionInterface|array $conditions = [], Cake\Database\ExpressionInterface|array $values = [], array<string> $types = [])
Constructs the case expression
Parameters
Cake\Database\ExpressionInterface|array
$conditions optional-
The conditions to test. Must be a ExpressionInterface instance, or an array of ExpressionInterface instances.
Cake\Database\ExpressionInterface|array
$values optional-
Associative array of values to be associated with the conditions passed in $conditions. If there are more $values than $conditions, the last $value is used as the
ELSE
value. array<string>
$types optional-
Associative array of types to be associated with the values passed in $values
_addExpressions() protected
_addExpressions(array $conditions, array<mixed> $values, array<string> $types): void
Iterates over the passed in conditions and ensures that there is a matching true value for each. If no matching true value, then it is defaulted to '1'.
Parameters
array
$conditions-
Array of ExpressionInterface instances.
array<mixed>
$values-
Associative array of values of each condition
array<string>
$types-
Associative array of types to be associated with the values
Returns
void
_castToExpression() protected
_castToExpression(mixed $value, string|null $type = null): mixed
Conditionally converts the passed value to an ExpressionInterface object if the type class implements the ExpressionTypeInterface. Otherwise, returns the value unmodified.
Parameters
mixed
$value-
The value to convert to ExpressionInterface
string|null
$type optional-
The type name
Returns
mixed
_compile() protected
_compile(Cake\Database\ExpressionInterface|array|string $part, Cake\Database\ValueBinder $binder): string
Compiles the relevant parts into sql
Parameters
Cake\Database\ExpressionInterface|array|string
$part-
The part to compile
Cake\Database\ValueBinder
$binder-
Sql generator
Returns
string
_requiresToExpressionCasting() protected
_requiresToExpressionCasting(array $types): array
Returns an array with the types that require values to be casted to expressions, out of the list of type names passed as parameter.
Parameters
array
$types-
List of type names
Returns
array
add() public
add(Cake\Database\ExpressionInterface|array $conditions = [], Cake\Database\ExpressionInterface|array $values = [], array<string> $types = []): $this
Adds one or more conditions and their respective true values to the case object. Conditions must be a one dimensional array or a QueryExpression. The trueValues must be a similar structure, but may contain a string value.
Parameters
Cake\Database\ExpressionInterface|array
$conditions optional-
Must be a ExpressionInterface instance, or an array of ExpressionInterface instances.
Cake\Database\ExpressionInterface|array
$values optional-
Associative array of values of each condition
array<string>
$types optional-
Associative array of types to be associated with the values
Returns
$this
elseValue() public
elseValue(Cake\Database\ExpressionInterface|array|string|null $value = null, string|null $type = null): void
Sets the default value
Parameters
Cake\Database\ExpressionInterface|array|string|null
$value optional-
Value to set
string|null
$type optional-
Type of value
Returns
void
sql() public
sql(Cake\Database\ValueBinder $binder): string
Converts the Node into a SQL string fragment.
Parameters
Cake\Database\ValueBinder
$binder-
Placeholder generator object
Returns
string
traverse() public
traverse(Closure $callback): $this
Iterates over each part of the expression recursively for every level of the expressions tree and executes the $callback callable passing as first parameter the instance of the expression currently being iterated.
Parameters
Closure
$callback
Returns
$this
Property Detail
$_conditions protected
A list of strings or other expression objects that represent the conditions of the case statement. For example one key of the array might look like "sum > :value"
Type
array
$_elseValue protected
The ELSE
value for the case statement. If null then no ELSE
will be included.
Type
Cake\Database\ExpressionInterface|array|string|null
$_values protected
Values that are associated with the conditions in the $_conditions array. Each value represents the 'true' value for the condition with the corresponding key.
Type
array
© 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.4/class-Cake.Database.Expression.CaseExpression.html