Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

Symfony2からDoctrineのPDOオプションを指定する

Symfony2にはデフォルトでDoctrine2を使用するようになっていますが、そのDoctrine2は内部でPDO使用しています。んで、そのPDOにはPHP: PDO::setAttribute - Manualにあるように、色々なオプションを付けることで動作を変更できます。
Symfony2からDoctrine2の設定を行うにはapp/config/config.ymlを編集することになりますが、書式はドキュメントにもあるとおり、"options"キーに対して配列を指定します。

で、以下のようにやってみると。。。まあ、予想通り動きません><

doctrine:
    dbal:
        driver:   %database_driver%
        host:     %database_host%
        port:     %database_port%
        dbname:   %database_name%
        user:     %database_user%
        password: %database_password%
        charset:  UTF8
        options:
          PDO::ATTR_ORACLE_NULLS: PDO::NULL_EMPTY_STRING

実際には、定数の値を指定する必要があるようです。

$ php -r "var_dump(PDO::ATTR_ORACLE_NULLS, PDO::NULL_EMPTY_STRING);"
int(11)
int(1)
$ 

ということで、

doctrine:
    dbal:
        driver:   %database_driver%
        host:     %database_host%
        port:     %database_port%
        dbname:   %database_name%
        user:     %database_user%
        password: %database_password%
        charset:  UTF8
        options:
          11: 1 # PDO::ATTR_ORACLE_NULLS: "PDO::NULL_EMPTY_STRING"

とすると、期待通り動作しました。