【发布时间】:2020-07-30 17:55:32
【问题描述】:
我有一个多对多关系,我的数据库中的表是:
- 文章:(id,titre,description,category,createAt)
- article_groupe_auteur:(article_id,groupe_auteur_id)
- groupe_auteur : (id,nom,prenom,adress,institution,city)
我需要检索作者所依赖的文章。
Sql 查询
use RevueProject;
select nom_auteur,prenom_auteur,nom_ins,adresse_ins from groupe_auteur ga
INNER JOIN
article_groupe_auteur aga on groupe_auteur.id = aga.groupe_auteur_id
INNER JOIN article a on aga.article_id = a.id
where a.id=21;
Dql查询
public function SelectArticleAuthors2(int $Id){
return $this->createQueryBuilder('GA');
->innerJoin('article_groupe_auteur','aga', Join::WITH , 'aga = ga.groupe_auteur_id')
->innerJoin('article','a',Join::WITH , 'a = aga.article_id')
->where('aga.article_id = : Id')
->setParameter('Id', $Id);
->getQuery()->getResult()
}
【问题讨论】:
-
你的entities真的有名为
groupe_auteur_id的properties吗?或者您是否将它们正确设置为一对/多对多/一对关系?我觉得很奇怪。通常你可以通过innerJoin('GA.articles', 'a')或类似的方式加入,因为条件会被定义的关系隐含。 -
嘿 Jukumi 我在我的实体中没有 groupe_auteur_id 它在由我尝试的关系 ManyToMany 创建的新表中的唯一属性; innerJoin('GA.articles', 'a') 但我不知道我错过了什么
-
那么您可能应该收到一条错误消息?还是只是高兴地返回空结果?
-
是的,它给出了一个错误:语义错误] 第 0 行,'article_groupe_auteur' 附近的第 53 列:错误:未定义类'article_groupe_auteur'。
-
查询构建器使用实体及其属性/关系。所以你可以加入
innerJoin(ArticleGroupAuteur::class, ...)(如果你的实体是这样调用的),但我发现使用我之前提到的表格更容易。错误也不尽相同,要冷静处理,一一处理。
标签: symfony symfony4 query-builder dql