2013-08-27 148 views
0

我有兩個實體的多對多關係:學說2 - 多對多加入

class Foo 
{ 
    /** 
    * @ORM\ManyToMany(targetEntity="Bar", inversedBy="foos") 
    * @ORM\JoinTable(name="Foo_x_Bar") 
    */ 
    protected $bars; 
} 

class Bar 
{ 
    /** 
    * @ORM\ManyToMany(targetEntity="Foo", mappedBy="bars") 
    */ 
    protected $foos; 
} 

我想獲取所有對Foo和Bar的實例中,即設置一個結果:

array (size=2) 
    0 => 
    array (size=2) 
     'Foo' => Foo instance 
     'Bar' => Bar instance 
    1 => 
    array (size=2) 
     'Foo' => Foo instance 
     'Bar' => Bar instance 

我試圖在網上描述的幾種方式做到這一點,但我仍然無法選擇整個實體。 我能夠獲得特定列與此查詢:

SELECT f.something, b.somethingElse FROM Entity\Foo f LEFT JOIN f.bars b

但是當我忽略在SELECT語句中列名我只得到美孚實例和酒吧實例消失。我如何獲得包含兩個實體的結果集?

回答

0

在Doctrine 2中ManyToMany關係確實非常有限。它全部自動生成,它不是一個實體。

如果您想要超越基本的默認行爲,那麼創建一個FooBar實體並設置與Foo和Bar的各個ManyToOne關係。

這樣做將允許您直接在FooBar上查詢。它還允許您將其他屬性/關係添加到連接表中。