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();

そして、ヒットがあると仮定して、1 つの結果だけを取得したいと考えています。

使用に関する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 に答える