在这上面找不到任何东西 - 看起来应该是直截了当的。
因此,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();
我想要做的是为其中一列指定类型转换,但是我找不到文档或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
如果有人知道如何做到这一点(这是SQL而不是DQL),我将不胜感激。谢谢。
答案 0 :(得分:5)
这不适用于DBAL级别。如果您在ORM中使用NativeSQL查询,则可以通过使用HYDRATE_ARRAY
模式并将一些获取的字段映射到实体来通过水合(参见NativeSQL section in the Doctrine ORM documentation)进行这种转换。最快的解决方案(如果您不打算使用ORM)是迭代结果并通过访问Doctrine\DBAL\Types\Type::getType($someType)->convertToPhpValue($fetchedValue)
手动应用类型转换。为了能够在Doctrine\ORM\Query\ResultSetMapping#addScalarResult
中指定第三个参数来说明提取的类型,ORM可能是一个有价值的补充。