2015-01-14 61 views
7

我喜歡數據操作查詢的便利方法$ conn-> insert()和$ conn-> update()在doctrine 2 DBAL中,因爲插入/更新值可以保持傳遞作爲關聯數組。但是,我如何傳遞一個NULL值,一個MySQL函數或其他表達式作爲值?更新或插入方法中的學說2 DBAL表達式

E.g:

/* $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 = ? 

因此這些值將被視爲字符串。 有沒有辦法使用這種技術進行這項工作?

回答

1

有一個可選$types參數,默認設置爲空數組:

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

$types數組可以包含PDO type constants

所以我想嘗試:

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