[英]querybuilder join query in Doctrine2 for Symfony2
Could somebody convert this query for me in querybuilder? 有人可以在querybuilder中为我转换此查询吗?
SELECT m.id,n.unitid
FROM mappaths m JOIN unitids n on (m.id=n.id) where n.databaseid=1
I am using this query but it gives me all the values of mm.unitid
, while my requirement is to get only one value that is defined by test=1
variable 我正在使用此查询,但它为我提供了mm.unitid
所有值,而我的要求是仅获取由test=1
变量定义的一个值
$query=$qb->select('mm.unitid')
->from('ApiMapBundle:Mappaths','m')
->from('ApiMapBundle:Unitids','mm')
// ->leftJoin('m','u')
->leftJoin('m.refUnitids1','u','WITH','m.id = u')
// ->leftJoin('m.refUnitids2','v')
->where('m.id=:test')
->setParameter('test',1)
->getQuery()->getResult();
Try following: 请尝试以下操作:
$query = $qb->select('mm.unitid')
->from('ApiMapBundle:Mappaths','m')
->innerJoin('m.refUnitids1','mm','WITH','m.id = mm.FIELD') //you need to specify on which field of mm join should be done
->where('m.id=:test')
->setParameter('test',1)
->getQuery()
->getResult();
You need to specify field of Unitids
which should be used to join to Mappaths
. 您需要指定Unitids
字段,该字段应用于加入Mappaths
。 The best way would be to define this relation in Entity
definition, then you can use just ->innerJoin('m.refUnitids1','mm')
without additional join parameters. 最好的方法是在Entity
定义中定义此关系,然后可以仅使用->innerJoin('m.refUnitids1','mm')
而无需其他连接参数。
Also, in this case, it is better to use innerJoin
instead of leftJoin
另外,在这种情况下,最好使用innerJoin
而不是leftJoin
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.