2016-07-29 7 views
0

誰でもこのSQLクエリをsymfonyのクエリビルダーに変換してください。create Query Builder symfony inner join

Select a.* From article a 
Inner Join 
    articles_devis ad On a.id=ad.article_id 
Inner Join 
    devis d On d.id=ad.devis_id 
Inner Join 
    utilisateurs u On u.id=d.user_id 
Where u.id=7 and Where d.id=63 

私は、この行のコードを試してみましたが、それはあなたがリポジトリを作成する必要が

public function ArticlesByDevisByUser(){ 
     $qb = $this->createQueryBuilder('a') 
       ->select('a.*') 
       ->from('ArticleBundle:Article', 'a') 
       ->innerJoin('a.articledevis', 'ad') 
       ->where('articles.id = ad.article') 
       ->innerJoin('ad.devis', 'd') 
       ->where('d.id = ad.devis') 
       ->innerJoin('d.user', 'u') 
       ->where('u.id = d.user') 
       ->andWhere('u.user=7') 
       ->andWhere('d.id=63'); 
     return $qb->getQuery()->getResult(); 
    } 
+0

に与える属性名は「動作しませんでした」によって異なります。それがクラッシュしたのか?エラーは何ですか?それは期待された結果ではありませんか?ちょっと凝ってください – Preuk

答えて

0

仕事と(それがまだ行われていない場合)@ORM\Entity注釈を使用して、あなたの記事にリンクしませんでした:あなたの記事のエンティティで

:あなたのArticleRで

/** 
* @ORM\Entity(repositoryClass="YourProject\YourBundle\Entity\ArticleRepository") 
* 
*/ 
class Article 
{ 
... 
} 

そして、 epositoryは、あなたの関数を置く:

use Doctrine\ORM\EntityRepository; 

class ArticleRepository extends EntityRepository 
{ 
    public function ArticlesByDevisByUser($userId, $devisId) 
    { 
     return $this->createQueryBuilder('a') 
      ->innerJoin('a.articledevis', 'ad') 
      ->innerJoin('a.devis', 'ad') 
      ->innerJoin('a.user', 'au') 
      ->where('ad.id = :devisId') 
      ->andWhere('au.id = :userId') 
      ->setParameter('userId', $userId) 
      ->setParameter('devisId', $devisId) 
      ->getQuery() 
      ->getResult(); 
    } 
} 

私はinnerJoinためarticledevisdevisuserを置くが、それはあなたがあなたのArticleエンティティ