0

我正在使用 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();

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

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

Codeigniter 有一些内置功能要做$query->row(),但这似乎不起作用——我打赌是因为 Doctrine 集成。

谢谢!

4

1 回答 1

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;
}
于 2012-06-15T08:43:44.283 回答