任何人都可以将此 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();
}
最佳答案
您必须创建一个存储库并使用 @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
中,但这取决于您在文章
实体
关于mysql - 创建查询生成器 symfony 内连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38661410/