如何在codeigniter / doctrine查询中使用LIMIT?

时间:2012-06-15 02:52:01

标签: doctrine-orm limit codeigniter-2

我正在使用CodeIgniter2 + Doctrine2,并提供以下查询:

$query = $this->doctrine->em->createQuery("
         SELECT u
         FROM ORM\Dynasties2\Characters u
         WHERE u.fathersId = $key
         AND u.deathDate IS NULL
         AND u.isRuler = '0' 
         AND u.isFemale = '0'
         AND u.useAI = '1'
         AND u.bornDate <= $of_age
           ");
$sons_of_age = $query -> getResult();

我只想得到一个结果,假设有任何命中。

我查看了有关使用->LIMIT(1)的Doctrine文档,但我尝试将其放在我的查询中的各个地方,并且只会出错。

Codeigniter有一些内置于$query->row()的函数,但这似乎不起作用 - 我因为Doctrine集成而下注。

谢谢!

1 个答案:

答案 0 :(得分:0)

您正在寻找方法Query::setMaxResults($number);然后您可以使用Query:getSingleResult();,但如果没有记录,方法Query:getSingleResult();会抛出错误。

$query = $this->doctrine->em->createQuery("
         SELECT u
         FROM ORM\Dynasties2\Characters u
         WHERE u.fathersId = $key
         AND u.deathDate IS NULL
         AND u.isRuler = '0' 
         AND u.isFemale = '0'
         AND u.useAI = '1'
         AND u.bornDate <= $of_age
           ");
$query->setMaxResults(1);
try {
  $sons_of_age = $query->getSingleResult();
} catch (\Doctrine\ORM\NoResultException $e) {
  $sons_of_age = null;
}