簡體   English   中英

Symfony2在Doctrine2中使用querybuilder加入查詢

[英]querybuilder join query in Doctrine2 for Symfony2

有人可以在querybuilder中為我轉換此查詢嗎?

SELECT m.id,n.unitid 
  FROM mappaths m JOIN unitids n on (m.id=n.id) where n.databaseid=1

我正在使用此查詢,但它為我提供了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();

請嘗試以下操作:

$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();

您需要指定Unitids字段,該字段應用於加入Mappaths 最好的方法是在Entity定義中定義此關系,然后可以僅使用->innerJoin('m.refUnitids1','mm')而無需其他連接參數。

另外,在這種情況下,最好使用innerJoin而不是leftJoin

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM