Mysql Doctrine2左联接中的多个On条件

Mysql Doctrine2左联接中的多个On条件,mysql,symfony,doctrine-orm,query-builder,dql,Mysql,Symfony,Doctrine Orm,Query Builder,Dql,我有汇率和汇率表。我想用条令查询语言(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 JO

我有汇率和汇率表。我想用条令查询语言(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;
更具体地说,我这里有两个问题

  • 如何从两个表中选择某些特定列
  • 如何在联接表时给出多个ON条件

  • 因此,请使用queryBuilder()显示DQL查询。提前谢谢

    我建议将附加条件添加到where条件中。 除此之外,我强烈建议您阅读有关条令QueryBuilder等的文档,因为您的问题并不表明您对条令有任何经验。仅仅在没有任何个人努力的情况下抛出一个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));