任何人都可以请将此sql查询转换为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 :(得分:0)
您必须使用@ORM\Entity
注释创建存储库并将其链接到您的文章(如果尚未完成):
在您的文章实体中:
/**
* @ORM\Entity(repositoryClass="YourProject\YourBundle\Entity\ArticleRepository")
*
*/
class Article
{
...
}
然后在你的ArticleRepository中放置你的函数:
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();
}
}
我为articledevis
添加了devis
,user
和innerJoin
,但这取决于您在Article
实体中提供的属性名称