Class ValuesExpression
An expression object to contain values being inserted.
Helps generate SQL with the correct number of placeholders and bind values correctly into the statement.
Property Summary
-
$_castedExpressions protected
bool
Whether values have been casted to expressions already.
-
$_columns protected
array
List of columns to ensure are part of the insert.
-
$_query protected
Cake\Database\Query|null
The Query object to use as a values expression
-
$_typeMap protected
Cake\Database\TypeMap|null
-
$_values protected
array
Array of values to insert.
Method Summary
-
__construct() public
Constructor
-
_castToExpression() protected
Conditionally converts the passed value to an ExpressionInterface object if the type class implements the ExpressionTypeInterface. Otherwise, returns the value unmodified.
-
_columnNames() protected
Get the bare column names.
-
_processExpressions() protected
Converts values that need to be casted to expressions
-
_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
Add a row of data to be inserted.
-
getColumns() public
Gets the columns to be inserted.
-
getDefaultTypes() public
Gets default types of current type map.
-
getQuery() public
Gets the query object to be used as the values expression to be evaluated to insert records in the table.
-
getTypeMap() public
Returns the existing type map.
-
getValues() public
Gets the values to be inserted.
-
setColumns() public
Sets the columns to be inserted.
-
setDefaultTypes() public
Overwrite the default type mappings for fields in the implementing object.
-
setQuery() public
Sets the query object to be used as the values expression to be evaluated to insert records in the table.
-
setTypeMap() public
Creates a new TypeMap if $typeMap is an array, otherwise exchanges it for the given one.
-
setValues() public
Sets the values to be inserted.
-
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(array $columns, Cake\Database\TypeMap $typeMap)
Constructor
Parameters
-
array
$columns The list of columns that are going to be part of the values.
-
Cake\Database\TypeMap
$typeMap A dictionary of column -> type names
_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
_columnNames() ¶ protected
_columnNames(): array
Get the bare column names.
Because column names could be identifier quoted, we need to strip the identifiers off of the columns.
Returns
array
_processExpressions() ¶ protected
_processExpressions(): void
Converts values that need to be casted to expressions
Returns
void
_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\Query|array $values): void
Add a row of data to be inserted.
Parameters
-
Cake\Database\Query|array
$values Array of data to append into the insert, or a query for doing INSERT INTO .. SELECT style commands
Returns
void
Throws
Cake\Database\Exception\DatabaseException
When mixing array + Query data types.
getDefaultTypes() ¶ public
getDefaultTypes(): array<int|string, string>
Gets default types of current type map.
Returns
array<int|string, string>
getQuery() ¶ public
getQuery(): Cake\Database\Query|null
Gets the query object to be used as the values expression to be evaluated to insert records in the table.
Returns
Cake\Database\Query|null
getTypeMap() ¶ public
getTypeMap(): Cake\Database\TypeMap
Returns the existing type map.
Returns
Cake\Database\TypeMap
setColumns() ¶ public
setColumns(array $columns): $this
Sets the columns to be inserted.
Parameters
-
array
$columns Array with columns to be inserted.
Returns
$this
setDefaultTypes() ¶ public
setDefaultTypes(array<int|string, string> $types): $this
Overwrite the default type mappings for fields in the implementing object.
This method is useful if you need to set type mappings that are shared across multiple functions/expressions in a query.
To add a default without overwriting existing ones
use getTypeMap()->addDefaults()
Parameters
-
array<int|string, string>
$types The array of types to set.
Returns
$this
See Also
setQuery() ¶ public
setQuery(Cake\Database\Query $query): $this
Sets the query object to be used as the values expression to be evaluated to insert records in the table.
Parameters
-
Cake\Database\Query
$query The query to set
Returns
$this
setTypeMap() ¶ public
setTypeMap(Cake\Database\TypeMap|array $typeMap): $this
Creates a new TypeMap if $typeMap is an array, otherwise exchanges it for the given one.
Parameters
-
Cake\Database\TypeMap|array
$typeMap Creates a TypeMap if array, otherwise sets the given TypeMap
Returns
$this
setValues() ¶ public
setValues(array $values): $this
Sets the values to be inserted.
Parameters
-
array
$values Array with values to be inserted.
Returns
$this
sql() ¶ public
sql(Cake\Database\ValueBinder $binder): string
Converts the Node into a SQL string fragment.
Parameters
-
Cake\Database\ValueBinder
$binder
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