2016-10-20 9 views
-1

У меня есть таблица RATE и BRANCH_CURRE. Я хочу выполнить операцию левого соединения (соединение ветви по скорости) в Doctrine Query Language (DQL). My SQL Query является:Несколько условий в Doctrine2 Left Join

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. Как задать несколько условий включения при соединении таблиц.

Итак, пожалуйста, покажите DQL-запрос, используя queryBuilder(). Заранее спасибо!

ответ

0

Предлагаю добавить дополнительные условия в условия условия. Помимо этого, я настоятельно рекомендую прочитать документацию, касающуюся 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));