Merge
class Merge extends Query implements ConditionInterface (View source)
General class for an abstracted MERGE query operation.
An ANSI SQL:2003 compatible database would run the following query:
Traits
Provides an implementation of ConditionInterface.
Constants
| STATUS_INSERT |
Returned by execute() if an INSERT query has been executed. |
| STATUS_UPDATE |
Returned by execute() if an UPDATE query has been executed. |
Properties
| protected Connection | $connection | The connection object on which to run this query. |
from Query |
| protected string | $connectionTarget | The target of the connection object. |
from Query |
| protected string | $connectionKey | The key of the connection object. |
from Query |
| protected array | $queryOptions | The query options to pass on to the connection object. |
from Query |
| protected string | $uniqueIdentifier | A unique identifier for this query object. |
from Query |
| protected int | $nextPlaceholder | The placeholder counter. |
from Query |
| protected array | $comments | An array of comments that can be prepended to a query. |
from Query |
| protected Condition | $condition | The condition object for this query. |
from QueryConditionTrait |
| protected string | $table | The table to be used for INSERT and UPDATE. |
|
| protected string | $conditionTable | The table or subquery to be used for the condition. |
|
| protected array | $insertFields | An array of fields on which to insert. |
|
| protected array | $defaultFields | An array of fields which should be set to their database-defined defaults. |
|
| protected string | $insertValues | An array of values to be inserted. |
|
| protected array | $updateFields | An array of fields that will be updated. |
|
| protected array | $expressionFields | Array of fields to update to an expression in case of a duplicate record. |
|
| protected bool | $needsUpdate | Flag indicating whether an UPDATE is necessary. |
Methods
Executes the merge database query.
Implements PHP magic __toString method to convert the query to a string.
Sets the table or subquery to be used for the condition.
Adds a set of field->value pairs to be updated.
Specifies fields to be updated as an expression.
Adds a set of field->value pairs to be inserted.
Specifies fields for which the database-defaults should be used.
Sets common field-value pairs in the INSERT and UPDATE query parts.
Sets the key fields to be used as conditions for this query.
Sets a single key field to be used as condition for this query.
Details
__construct(Connection $connection, string $table, array $options = [])
Constructs a Merge object.
in
Query at line 86
__sleep()
Implements the magic __sleep function to disconnect from the database.
in
Query at line 95
__wakeup()
Implements the magic __wakeup function to reconnect to the database.
in
Query at line 102
__clone()
Implements the magic __clone function.
StatementInterface|null
execute()
Executes the merge database query.
string
__toString()
Implements PHP magic __toString method to convert the query to a string.
In the degenerate case, there is no string-able query as this operation is potentially two queries.
in
Query at line 128
uniqueIdentifier()
Returns a unique identifier for this object.
in
Query at line 138
The
nextPlaceholder()
Gets the next placeholder value for this query object.
in
Query at line 158
$this
comment($comment)
Adds a comment to the query.
By adding a comment to a query, you can more easily find it in your query log or the list of active queries on an SQL server. This allows for easier debugging and allows you to more easily find where a query with a performance problem is being generated.
The comment string will be sanitized to remove * / and other characters that may terminate the string early so as to avoid SQL injection attacks.
in
Query at line 178
array
getComments()
Returns a reference to the comments array for the query.
Because this method returns by reference, alter hooks may edit the comments array directly to make their changes. If just adding comments, however, the use of comment() is preferred.
Note that this method must be called by reference as well:
in
Query at line 188
Connection
getConnection()
Gets the database connection to be used for the query.
condition($field, $value = NULL, $operator = '=')
{@inheritdoc}
isNull($field)
{@inheritdoc}
isNotNull($field)
{@inheritdoc}
exists(SelectInterface $select)
{@inheritdoc}
notExists(SelectInterface $select)
{@inheritdoc}
alwaysFalse()
{@inheritdoc}
conditions()
{@inheritdoc}
arguments()
{@inheritdoc}
where($snippet, $args = [])
{@inheritdoc}
compile(Connection $connection, PlaceholderInterface $queryPlaceholder)
{@inheritdoc}
compiled()
{@inheritdoc}
conditionGroupFactory($conjunction = 'AND')
{@inheritdoc}
andConditionGroup()
{@inheritdoc}
orConditionGroup()
{@inheritdoc}
protected $this
conditionTable($table)
Sets the table or subquery to be used for the condition.
$this
updateFields(array $fields)
Adds a set of field->value pairs to be updated.
$this
expression($field, $expression, array $arguments = NULL)
Specifies fields to be updated as an expression.
Expression fields are cases such as counter = counter + 1. This method takes precedence over MergeQuery::updateFields() and its wrappers, MergeQuery::key() and MergeQuery::fields().
$this
insertFields(array $fields, array $values = [])
Adds a set of field->value pairs to be inserted.
$this
useDefaults(array $fields)
Specifies fields for which the database-defaults should be used.
If you want to force a given field to use the database-defined default, not NULL or undefined, use this method to instruct the database to use default values explicitly. In most cases this will not be necessary unless you are inserting a row that is all default values, as you cannot specify no values in an INSERT query.
Specifying a field both in fields() and in useDefaults() is an error and will not execute.
$this
fields(array $fields, array $values = [])
Sets common field-value pairs in the INSERT and UPDATE query parts.
This method should only be called once. It may be called either with a single associative array or two indexed arrays. If called with an associative array, the keys are taken to be the fields and the values are taken to be the corresponding values to set. If called with two arrays, the first array is taken as the fields and the second array is taken as the corresponding values.
$this
keys(array $fields, array $values = [])
Sets the key fields to be used as conditions for this query.
This method should only be called once. It may be called either with a single associative array or two indexed arrays. If called with an associative array, the keys are taken to be the fields and the values are taken to be the corresponding values to set. If called with two arrays, the first array is taken as the fields and the second array is taken as the corresponding values.
The fields are copied to the condition of the query and the INSERT part. If no other method is called, the UPDATE will become a no-op.
$this
key(string $field, mixed $value = NULL)
Sets a single key field to be used as condition for this query.
Same as \Drupal\Core\Database\Query\Merge::keys() but offering a signature that is more natural for the case of a single key.