Symfony Doctrine2:createQueryBuilder,它具有具有多个条件的innerJoin

Symfony Doctrine2:createQueryBuilder,它具有具有多个条件的innerJoin,symfony,doctrine-orm,doctrine-query,Symfony,Doctrine Orm,Doctrine Query,我基本上想执行以下SQL语句: SELECT * FROM Table1 JOIN Table2 ON ( Table2.ID = Table1.THIS_ID OR Table2.ID = Table1.THAT_ID ) 使用createQueryBuilder和而不是createQuery 可能吗? 我所能找到的所有示例都只处理一个条件,而没有处理连接和/或连接内的问题 谢谢。您可以尝试类似的方法(例如在存储库中): 您可以这样做: $qb->leftJoin(

我基本上想执行以下SQL语句:

SELECT * FROM Table1
JOIN Table2
ON (
Table2.ID = Table1.THIS_ID
OR
Table2.ID = Table1.THAT_ID
)
使用createQueryBuilder和而不是createQuery

可能吗? 我所能找到的所有示例都只处理一个条件,而没有处理连接和/或连接内的问题


谢谢。

您可以尝试类似的方法(例如在存储库中):


您可以这样做:

$qb->leftJoin(
         'u.Phonenumbers', 
         'p', 
         Expr\Join::WITH, 
         $qb->expr()->orx(
                 $qb->expr()->eq('t.this_id', 't1.id'),
                 $qb->expr()->eq('t.this_id', 't1.id')
         )
)

这里我有点麻烦,是美国电话号码部分。e、 我只想加入Table2,就像在普通SQL中一样。我不想处理一点,如果PhoneNumber是一个映射,那么这两个表之间就没有映射。
$qb->leftJoin(
         'u.Phonenumbers', 
         'p', 
         Expr\Join::WITH, 
         $qb->expr()->orx(
                 $qb->expr()->eq('t.this_id', 't1.id'),
                 $qb->expr()->eq('t.this_id', 't1.id')
         )
)