5

Doctrine2でDQLクエリを作成しました。

$qb->select('r.position')
    ->from('\Entities\Races', 'r')
    ->where($qb->expr()->eq('r.entrantId', ':entrant_id'))
    ->setParameter('entrant_id', $this->entrantId);
$query = $qb->getQuery();
$aRaces = $query->getResult();

現在、次のような配列でクエリの結果を返します。

Array
(
    [0] => Array
        (
            [position] => 10
        )

    [1] => Array
        (
            [position] => 4
        )
)

結果にRacesオブジェクトの配列を返し、オブジェクトに関連付けられたメソッドにアクセスできるようにします(以前のバージョンのDoctrineはデフォルトでオブジェクトを返したと確信しています)。

私は試した:

$aRaces = $query->getResult(Query::HYDRATE_OBJECT);

しかし、それは違いを生みませんでした。

ヘルプに感謝します

4

3 に答える 3

5

positionDBから列のみをフェッチしています。に置き換えselect('r.position')てみてくださいselect(r)DQLリファレンスを参照してください

position属性のみのオブジェクトが必要な場合は、部分的なオブジェクトを参照してください

于 2011-08-15T10:42:58.140 に答える
3

$qb->getResult(\Doctrine\ORM\Query::HYDRATE_OBJECT);

オブジェクトを含む配列を返すと、次の方法でそれらをキャッチできます。$match[0];

単一の結果を返したい場合は、以下を使用する必要があります。$qb->getOneOrNullResult()

于 2014-04-13T18:12:43.203 に答える
1

私はあなたの解決策で私の問題を解決できませんでした、ここにコードの私の部分:

$qb = $this->_objectManager->createQuery('Select d from Hotbed\Entity\Department d where d.id <> :id and d.title = :title');
        $qb->setParameters(array('id' => $context['id'], 'title' => $value));
        $match = $qb->getResult(\Doctrine\ORM\Query::HYDRATE_OBJECT);

$ matchはこれを返します:

array(1) {
 [0] => object(Hotbed\Entity\Department)#626 (4) {
   ['inputFilter':protected] =&gt; NULL
   ['id':protected] =&gt; int(25)
   ['title':protected] => string(4) '2222'
   ['state':protected] => int(0)
 }
}

助けのためのthx

于 2013-11-18T12:52:24.107 に答える