5

これで何も見つかりませんでした--しかし、それは簡単なようです。

したがって、バインドされたパラメーターの型変換について Doctrine2 ドキュメントが示す例は次のようになります。

$date = new \DateTime("2011-03-05 14:00:21");
$stmt = $conn->prepare("SELECT * FROM articles WHERE publish_date > ?");
$stmt->bindValue(1, $date, "datetime");
$stmt->execute();

私がしたいのは、列の 1 つの型変換を指定することですが、ドキュメントや StackOverflow には何も見つかりませんでした。これがどのように見えるかの疑似例:

$stmt = $conn -> prepare("SELECT datetime FROM articles WHERE id = 1");
$stmt -> setType(0, "date_type"); // 0 being the column position, "date_type" being the PHP type to convert to

誰かがこれを行う方法を知っていれば (これは DQL ではなく SQL です)、私は大いに感謝します。ありがとうございました。

4

1 に答える 1

7

これは、DBAL レベルで機能するものではありません。ORM で NativeSQL クエリを使用している場合、ハイドレーション ( Doctrine ORM ドキュメント の NativeSQL セクションを参照) を使用してその種の変換を取得できHYDRATE_ARRAYます。モードを使用し、フェッチされたフィールドの一部をエンティティにマッピングします。最も速い解決策 (ORM を使用する予定がない場合) は、結果を反復処理し、 にアクセスして手動で型変換を適用することDoctrine\DBAL\Types\Type::getType($someType)->convertToPhpValue($fetchedValue)です。フェッチされた型を示す 3 番目のパラメータを で指定できるようにすると、ORM に貴重な追加となる可能性がありますDoctrine\ORM\Query\ResultSetMapping#addScalarResult

于 2012-07-15T18:16:10.637 に答える