我需要在我的一个系统的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"在课堂上#34; Doctrine \ ORM \ EntityManager"。
我也和经理一起尝试过同样的结果。
现在我现在可以制作一些代码来翻译字段,但我发现配置解决方案要干净得多。
有人知道symfony为什么不让我配置连接?
如果在DQL的子查询中有任何使用LIMIT的方法,我会发现它更好。
答案 0 :(得分:0)
DQL中没有LIMIT
个关键字。要使用此功能,您可以在查询对象上调用方法setMaxResults($limit)
。它也可以应用于Query Builder。
$query = $this->getEntityManager()
->createQuery('SELECT p FROM Product p')
->setMaxResults($limit);