我对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,
),
// ...
)
我做错了什么?
答案 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;
}
}