Doctrine 2 DBAL выражения в методах обновления или вставки

Мне нравятся удобные методы для запросов на манипулирование данными $ conn-> insert () и $ conn-> update () в DBAL доктрины 2, потому что значения insert / update могут быть переданы как ассоциативный массив. Но как я могу передать значение NULL, функцию MySQL или другие выражения в качестве значения?

Например:

/* $conn is a \Doctrine\DBAL\Connection object */
$conn->update('person', array('phone' => 'NULL'), array('id' => 1));
$conn->update('person', array('lastlogin' => 'NOW()'), array('id' => 1));
$conn->update('person', array('visit' => 'visit + 1'), array('id' => 1));

Эти вызовы функций будут создавать готовые операторы, такие как

UPDATE person SET phone = ? WHERE id = ?

и, таким образом, значения будут рассматриваться как строки.
Есть ли способ сделать эту работу, используя эту технику?

7

Решение

Есть необязательный $types аргумент, который по умолчанию равен пустому массиву:

    public function update($tableExpression, array $data, array $identifier, array $types = array())

$types массив может содержать Константы типа PDO который изменит, как соответствующий $data значения обрабатываются.

Итак, я бы попробовал:

$conn->update(
'person',                          // $tableExpression
array('phone' => null),            // $data
array('id' => 1),                  // $identifier
array('phone' => \PDO::PARAM_NULL) // $types
);
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]