8

挿入/更新値を連想配列として渡して保持できるため、doctrine 2 DBAL のデータ操作クエリ $conn->insert() および $conn->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 = ?

したがって、値は文字列として扱われます。この手法を使用してこの作業を行う方法はありますか?

4

1 に答える 1

2

オプションの$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
);
于 2015-05-12T19:04:47.617 に答える