Symfony2中相同表的两个外键
如果我们有两个外键,那么如何创建类似以下SQL的QueryBuilder: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')
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()
;