我有多个关系中的两个实体:
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实例会消失。如何获得包含两个实体的结果集?
答案 0 :(得分:0)
在Doctrine 2中,ManyToMany关系非常有限。它全部自动生成,而不是实体。
如果你想超越基本的默认行为,那么自己创建一个FooBar实体,并设置与Foo和Bar的单独ManyToOne关系。
这样做可以直接在FooBar上查询。它还允许您向连接表添加其他属性/关系。