我在SYmfony2项目中使用了doctrine。我做了一个查询,以某种语言获取我的所有项目,但它返回了我所有的语言:
public function rechercherProjets($lang, $cat)
{
return $qb = $this->createQueryBuilder('p')
->innerJoin ('p.descriptions', 'pi')
->innerJoin('p.categories', 'c')
->where('c.tag = :cat')
->andWhere('pi.langue = :lang')
->setParameters(array('lang'=>$lang,'cat'=>$cat))
->getQuery()->getResult();
}
奇怪的是, - > where('c.tag =:cat')完美地工作,但是当我尝试在我的项目中显示我的项目时, - >和其他('pi.langue =:lang')树枝模板,真的很奇怪。基本上,我用这个:
{% for projet in projets %}
<article class="projet">
<a href="{{ path('portfolio_public_projet',{'tag':projet.tag}) }}">
<img src="{{ asset("bundles/public/projets/vignettes/"~ projet.image) }}" alt="paranorium">
<h2>{{ projet.descriptions[0].nom }}</h2>
<div class="infoReduit">
<p>{{ projet.descriptions[0].descriptionCours }}</p>
</div>
<div class="infoTotal">
<p>{{ projet.descriptions[0].descriptionComplete }}</p>
<p>{% trans %}role{% endtrans %}: {{ projet.descriptions[0].roles }}</p>
<p>{% trans %}technologie{% endtrans %}: {{ projet.technologie }}</p>
<p>{% trans %}aptitude{% endtrans %}: {{ projet.descriptions[0].aptitudesDeveloppees }}</p>
</div>
<b>{% trans %}realisation{% endtrans %} {{ projet.annee }}</b>
</a>
</article>
{% endfor %}
projet.description [0]实际上包含我的第一语言(法语)项目的信息,projet.description [1]包含我的第二语言(英语)项目的信息。我想要的是我的请求给我一个projet.description,其中只包含一件我要求的语言。
或许我这样做的方式不对,如果os,怎么做呢?
答案 0 :(得分:1)
调用createQueryBuilder('p')
将在p上添加select语句,该语句表示repo链接到的实体。
如果您想要选择任何超出实体范围的内容,则需要使用addSelect('yourentity.attribute')
来明确选择。