2016-07-29 54 views
0

任何人都可以請將此sql查詢轉換爲symfony中的查詢生成器。創建查詢生成器symfony內部連接

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註釋你的文章(如果它尚未完成) :

在你的文章實體:

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

,然後在ArticleR 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(); 
    } 
} 

我把articledevisdevisuserinnerJoin但它取決於你的Article實體