带有join的Doctrine查询构建器返回实体数组而不是分组结果

时间:2015-01-15 13:46:03

标签: php mysql doctrine-orm doctrine

我对Doctrine有一些问题。我试着做一个leftJoin,跟着这个问题:How to do left join in Doctrine?

这是我的问题:

$qb = $this->getEntityManager()->createQueryBuilder();
    $qb
        ->select('a', 'u')
        ->from('Application\Entity\Event', 'a')
        ->leftJoin(
            'Application\Entity\Venue',
            'u',
            \Doctrine\ORM\Query\Expr\Join::WITH,
            'a.venue_id = u.id'
        )
        ->orderBy('a.event_datetime', 'DESC');

    var_dump($qb->getQuery()->getResult());

以下是结果:

array (size=4)
0 => 
object(Application\Entity\Event)[483]
  protected 'id' => int 8
  protected 'artist_id' => int 4
  protected 'venue_id' => int 1246
  protected 'name' => string 'Vlasta Redl' (length=11)
1 => 
object(Application\Entity\Venue)[477]
  protected 'id' => int 1246
  protected 'name' => string 'Malostranská beseda' (length=20)
  ...
2 => 
object(Application\Entity\Event)[468]
  protected 'id' => int 7
  protected 'artist_id' => int 3
  protected 'venue_id' => int 761
  protected 'name' => string 'Positive Mind' (length=13)

3 => 
object(Application\Entity\Venue)[485]
  protected 'id' => int 761
  protected 'name' => string 'Divadlo pod lampou' (length=18)
  ....

这是一组不同的对象。活动和场地。

但我期待这样的结果:

array(
    array(
        0 => Event
        1 => Venue,
    ),
    array(
        0 => Event
        1 => Venue,
    ),
    // ...
)

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我试过但我做不到。

我这样做了:

foreach($result as $object){
            if(get_class($object)=='Panel\PollBundle\Entity\PollProfile'){
                $pollProfile[] = $object;
            }
            else if (get_class($object)=='Panel\PollBundle\Entity\Poll') {
                $poll[] = $object;
            }
        }