如何以正确的大小写返回字段名


How to return field names in correct case

我需要在系统的一个DQL查询中包含一个带有LIMIT子句的子查询。由于Doctrine不支持,我将其更改为本机查询。然而,本机查询返回的是小写字段,而不是正确的大小写。情况是,由于这是工作代码,我有一些视图依赖于这些名称,并且更改所有名称要困难得多。

但是我在这里发现http://bit.ly/1Ht1ojH,这个方面可以在Doctrine中配置。所以我试了这个代码:

$conn = $this->getConnection();
$conn->setAttribute(Doctrine_Core::ATTR_FIELD_CASE, CASE_NATURAL);
$res = $conn->query("select MyCasedField from whatever")->fetchAll();

然而,我得到的错误"试图调用方法"setAttribute"类"Doctrine'ORM'EntityManager"。

我和经理试过了,结果也一样。

现在我可以编写一些代码来翻译字段,但我发现配置解决方案要干净得多。

有人知道为什么symfony不让我配置连接吗?

如果在DQL的子查询中有任何使用LIMIT的方法,我会发现它更好。

DQL中没有LIMIT关键字。要使用此功能,可以在查询对象上调用方法setMaxResults($limit)。它也可以应用于查询生成器。

$query = $this->getEntityManager()
        ->createQuery('SELECT p FROM Product p')
        ->setMaxResults($limit);