2016-07-29 5 views
0

könnte jemand bitte diese SQL-Abfrage in Query Builder in Symfony konvertieren.create Query Builder symfony innere Verbindung

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 

Ich habe diese Zeile Code versucht, aber es nicht

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

„hat nicht funktioniert“: hat es zum Absturz? Was ist der Fehler? ist es nicht das erwartete ergebnis? bitte ein wenig ausarbeiten – Preuk

Antwort

0

Sie ein Repository erstellen müssen funktionierten und verknüpft es mit Ihrem Artikel mit @ORM\Entity Annotation (falls es nicht bereits getan) :

in Ihrem Artikel Einheit:

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

Und dann in Ihrem ArticleR epository setzen Sie Ihre Funktion:

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

ich articledevis setzen, devis und user für die innerJoin aber es hängt Namen, die Sie in Ihrem Article Einheit geben Attribute