簡體   English   中英

教義2-多對多加入

[英]Doctrine 2 - many to many join

我在多對多關系中有兩個實體:

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語句中省略列名時,我只會得到Foo實例,而Bar實例會消失。 如何獲得包含兩個實體的結果集?

在Doctrine 2中,ManyToMany關系確實非常有限。它都是自動生成的,不是實體。

如果您想超越基本的默認行為,則可以為自己創建一個FooBar實體,並與Foo和Bar建立單獨的ManyToOne關系。

這樣做將使您可以直接在FooBar上進行查詢。 它還允許您向聯接表添加其他屬性/關系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM