Symfony2中相同表的两个外键

Symfony2中相同表的两个外键,symfony,doctrine-orm,query-builder,Symfony,Doctrine Orm,Query Builder,如果我们有两个外键,那么如何创建类似以下SQL的QueryBuilder: SELECT * FROM mappaths m JOIN unitids n ON (m.ref_unitids2 = n.id OR m.ref_unitids1 = n.id) WHERE m.id = 2 为此,我像QueryBuilder一样设计,但我认为它不正确: $query = $qb->select('m') ->from('ApiMapBundle:Mappaths','m')

如果我们有两个外键,那么如何创建类似以下SQL的QueryBuilder:

SELECT * 
FROM mappaths m
JOIN unitids n ON (m.ref_unitids2 = n.id OR m.ref_unitids1 = n.id)
WHERE m.id = 2
为此,我像QueryBuilder一样设计,但我认为它不正确:

$query = $qb->select('m')
    ->from('ApiMapBundle:Mappaths','m')
    ->innerJoin('m.refUnitids1','u')
    ->innerJoin('m.refUnitids2','v')   
    ->where('m.id=:test')
    ->setParameter('test',1)
    ->getQuery()
    ->getResult()
;

$users = $reposity->getResult();
return $users;

$dql = $qb->getDql();
echo $dql;
$result = $query->getResult();
echo $result;

您知道如何使用QueryBuilder解决上述查询吗?

您的示例不起作用,因为必须实现两个内部联接才能返回一行

类似的方法可能会起作用(我没有测试过):


您的示例不起作用,因为必须实现两个innerjoin才能返回一行

类似的方法可能会起作用(我没有测试过):


杰森。。这个查询有一个问题,例如,如果我请求表1(identity,a1,b1)表2(identity,forign_a1,forign_a1)和数据表2(1,2,3),那么它会给我一个序列2,3的值,在某些情况下会给3,2。如果他们先找到第二把外国钥匙,那就给我另一条路。你知道怎么解决这个问题吗。。。期待你的帮助吗?杰森。。这个查询有一个问题,例如,如果我请求表1(identity,a1,b1)表2(identity,forign_a1,forign_a1)和数据表2(1,2,3),那么它会给我一个序列2,3的值,在某些情况下会给3,2。如果他们先找到第二把外国钥匙,那就给我另一条路。你知道怎么解决这个问题吗。。。期待你的帮助?
$query = $qb->select('m')
    ->from('ApiMapBundle:Mappaths','m')
    ->join('YourBundle:YourOtherEntity', 'u', 'WITH', $qb->expr()->orX('m.refUnitids1 = u.id','m.refUnitids2 = u.id'))
    ->where('m.id=:test')
    ->setParameter('test',1)
    ->getQuery()
    ->getResult()
;