$table_information =
$this->connection->
schema()->
queryTableInformation($this->table
);
// Expressions take priority over literal fields, so we process those first
// and remove any literal fields that conflict.
$fields =
$this->fields;
foreach ($this->expressionFields
as $field =>
$data) { if (!
empty($data['arguments'
])) { foreach ($data['arguments'
] as $placeholder =>
$argument) { // We assume that an expression will never happen on a BLOB field,
// which is a fairly safe assumption to make since in most cases
// it would be an invalid query anyway.
$stmt->
getClientStatement()->
bindParam($placeholder,
$data['arguments'
][$placeholder]);
} } if ($data['expression'
] instanceof SelectInterface
) { $data['expression'
]->
compile($this->connection,
$this);
$select_query_arguments =
$data['expression'
]->
arguments();
foreach ($select_query_arguments as $placeholder =>
$argument) { $stmt->
getClientStatement()->
bindParam($placeholder,
$select_query_arguments[$placeholder]);
} } unset($fields[$field]);
}