2012-06-15 4 views
0

Я использую CodeIgniter2 + Doctrine2, и имеют следующий запрос:Как использовать LIMIT в запросе codeigniter/doctrine?

$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.

Спасибо!

ответ

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; 
} 
Смежные вопросы