我有RATE和BRANCH_CURRE表。我想在Doctrine查询语言(DQL)中执行左连接操作(加入分支到速率)。 我的SQL查询是:
SELECT r.id rid
,r.TIME rtime
,r.rate_candidate
,r.exchange_rate
,r.branch
,r.STATUS ratestatus
,bc.currency
,bc.scale bcscale
,bc.STATUS bcstatus
FROM rate r
LEFT JOIN branch_currency bc ON (
r.branch = bc.branch
AND (
r.from_currency = bc.currency
OR r.to_currency = bc.currency
)
)
WHERE r.STATUS = 1
AND bc.STATUS = 1;
更具体地说,我在这里有两个问题
所以请使用queryBuilder()显示DQL查询。 Thanx提前!!!
答案 0 :(得分:0)
我建议将附加条件添加到where条件中。 除此之外,我强烈建议您阅读有关Doctrine QueryBuilder等的文档,因为您的问题并没有表明您对Doctrine有任何经验。只是在没有任何个人努力的情况下抛出MySQL查询并不是一个好的和公平的方式。
这未经过测试,但应该给你一些指导。
$qb = $this->_em->createQueryBuilder();
$qb->select('r.branch, bc.exchange_rate');
$qb->from('rate', 'r');
$qb->leftJoin('r.branch', 'bc');
$qb->where($qb->expr()->orX('r.from_currency=bc.currency','r.to_currency = bc.currency));