我正在使用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集成而下注。
谢谢!
答案 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;
}