我正在尝试做这样的事情:
select * from table1 left join table2 on table1.field1=table2.field1 and table1.filed2=table2.filed2
...但是在DQL中。我加入表的字段在两个表中都具有相同的名称。我不允许修改表结构或列名。
在Table1的Symfony实体中,我创建了以下关联并生成了getter和setter:
/**
* @ORM\ManyToMany(targetEntity="Table2")
* @ORM\JoinTable(name="Table1_Table2",
* joinColumns={@ORM\JoinColumn(name="field1", referencedColumnName="field1"), @ORM\JoinColumn(name="field2", referencedColumnName="field2")},
* inverseJoinColumns={@ORM\JoinColumn(name="field1", referencedColumnName="field1"), @ORM\JoinColumn(name="field2", referencedColumnName="field2")}
* )
*/
private $table1_table2;
更新数据库架构后,尝试执行如下查询:
$results = $em->getRepository("AppBundle:Table1")->createQueryBuilder(t)->leftJoin('t.table1_table2', 'a');
...我只是从table1获取colums / results。如果我做一个innerJoin而不是leftJoin,我没有得到任何结果。
我可能做错了什么?是否可以使用DQL做这样的事情?