Doctrine2中的多个On条件左连接

时间:2016-10-20 07:52:50

标签: mysql symfony doctrine-orm query-builder dql

我有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;

更具体地说,我在这里有两个问题

  1. 如何从两个表中选择一些特定列。
  2. 如何在连接表时给出多个ON条件。
  3. 所以请使用queryBuilder()显示DQL查询。 Thanx提前!!!

1 个答案:

答案 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));