2017-05-10 12 views
2

普通のSQL句をDoctrineクエリに変換する際に問題があります。 私は下の平野SQLでWHERE句を追加しました:私は場所を示すQueryBuilder:副選択句の作成方法

addSelect
$qb = $doc->getEntityManager()->createQueryBuilder(); 
$query = $qb 
    ->select ('r') 
    ->from ('AppBundle:CFormResponse', 'r') 
    ->where ($qb->expr()->andX(
      $qb->expr()->eq('r.formId', ':id'), 
      $qb->expr()->addSelect('(SELECT f.private 
       FROM AppBundle:CForm f 
       WHERE f.formId = :id)' 
      ) 
      )) 
    ->setParameter ('id', $formId)->getQuery(); 
$result = $query->getResult(); 

:次のようにDQLにこの句を変換する私の試みがある

$query = $doc->getEntityManager() 
->createQueryBuilder() 
->select ('r') 
->from ('AppBundle:CFormResponse', 'r') 
->where ('r.formId = :id AND NOT (select f.private from cform f where f.FORM_ID = :id) ') 
->setParameter ('id', $formId)->getQuery(); 
$result = $query->getResult(); 

を(これまでに)立ち往生した。 誰かがこれを行う方法の方向に私を指摘できますか?

答えて

0

基本的に、あなたはあなたのaddSelectnotを追加する必要があります。

$query = $qb 
    ->select ('r') 
    ->from ('AppBundle:CFormResponse', 'r') 
    ->where ($qb->expr()->andX(
      $qb->expr()->eq('r.formId', ':id'), 
      $qb->expr()->not(
       $qb->expr() 
       ->select(`f.private`) 
       ->from('AppBundle:CForm', 'f') 
       ->where('f.formId = :id')) 
      ) 
      )) 
    ->setParameter ('id', $formId)->getQuery(); 
関連する問題