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

Web で説明されているいくつかの方法でそれを実行しようとしましたが、エンティティ全体を選択することはできません。このクエリで特定の列を取得できます。

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

しかし、SELECT ステートメントで列名を省略すると、Foo インスタンスのみが取得され、Bar インスタンスは消えます。両方のエンティティを含む結果セットを取得するにはどうすればよいですか?

4

1 に答える 1

0

ManyToMany リレーションは Doctrine 2 ではかなり制限されています。すべて自動的に生成され、エンティティではありません。

基本的なデフォルトの動作を超えたい場合は、自分で FooBar エンティティを作成し、Foo および Bar との個々の ManyToOne 関係をセットアップします。

そうすることで、FooBar で直接クエリを実行できるようになります。また、結合テーブルに追加のプロパティ/関係を追加することもできます。

于 2013-08-28T15:31:13.157 に答える