2012-05-19 9 views
3

Я разрабатываю приложение, используя Symfony2 и Doctrine2. Я также использую QueryBuilder Doctrine. У меня есть этот запрос:Doctrine querybuilder result

public function getInterpDesberdinak($MarkId) 
    { 
      $qb = $this->createQueryBuilder('c') 
       ->select('DISTINCT c.Gordailua, c') 
       ->where('c.MarkIdGordailua = :MarkId') 
       ->setParameter('MarkId', $MarkId); 
      $Emaitza = $qb->getQuery()->getResult(); 
      return $Emaitza; 
    }  

Я хотел бы получить результат, который я получу в $ Emaitza. Было бы что-то вроде:

$ Emaitza [0] ['Gordailua'] = выбрано первое значение Gordailua.

, а затем $ Emaitza [0] [?????] = Первый объект типа c.

Я как бы смущен. Спасибо.

ответ

-1

Прежде всего, вам нужно указать Из пункта:

$qb->from('YourBundle\Entity\ParentOfGordailua as pg'); 

Вы можете использовать: getArrayResult() для извлечения данных в виде массива, если вы хотите получить первый объект из ArrayCollection объекта (когда вы используете GetResult() вы должны:

$Gordailua = $Emaitza->first()->getGordailua(); 

Посмотрите на опорном и exaples: http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/dql-doctrine-query-language.html

+3

Я не думаю, что это правильное решение: $ Emaitza = $ qb-> getQuery() -> getResult(); Это массив, вы не можете вызывать -> first() в массиве. –

+1

Кроме того, если вы вызываете '$ this-> createQueryBuilder' из EntityRepository, то' FROM'clause позаботится о –

9

не помню, как я пришел на этот пост, но я даже читать и подумал, ну .. в любом случае ..

Я думаю, что он просит, чтобы получить первый результат, если так .. запрос должен сначала знать, что максимальный размер результата, делая

$qb->setMaxResults(1) 

а затем вы можете вызвать метод, который действительно определяет себя

$single_result = $qb->getSingleResult() 

Таким образом, в приведенном примере код будет выглядеть

$qb->getQuery()->setMaxResults(1)->getSingleResult(); 
+0

Проблема здесь в том, что этот запрос выдает ошибку, если ваш запрос ничего не возвращает. Например, вы запрашиваете «id = 1», если id = 1 не существует, вы получите ошибку «Результат не найден для запроса, хотя ожидалась хотя бы одна строка». – vinigarcia87

Смежные вопросы