Doctrine 查询条件没有 select 所需的语言
Doctrine query condition doesn't select desired language
我在我的 Symfony2 项目中使用了 doctrine。我做了一个查询,以某种语言获取我的所有项目,但它 returns 我所有的语言:
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') 工作得很好,但是 ->andWhere('pi.langue = :lang') 使得当我尝试在我的 twig 模板中显示我的项目时,它真的很奇怪.基本上,我用这个:
{% 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]包含了我的项目的第二语言(英语)的信息.我想要的是我的请求 returns me a projet.description 只包含 1 个东西,这是我要求的语言。
或者我做错了,如果是这样,如何正确做?
调用 createQueryBuilder('p')
将在 p 上添加 select 语句,它象征着 repo 链接到的实体。
如果您想 select 超出实体范围的任何内容,则需要使用 addSelect('yourentity.attribute')
使 selection 显式化。
我在我的 Symfony2 项目中使用了 doctrine。我做了一个查询,以某种语言获取我的所有项目,但它 returns 我所有的语言:
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') 工作得很好,但是 ->andWhere('pi.langue = :lang') 使得当我尝试在我的 twig 模板中显示我的项目时,它真的很奇怪.基本上,我用这个:
{% 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]包含了我的项目的第二语言(英语)的信息.我想要的是我的请求 returns me a projet.description 只包含 1 个东西,这是我要求的语言。
或者我做错了,如果是这样,如何正确做?
调用 createQueryBuilder('p')
将在 p 上添加 select 语句,它象征着 repo 链接到的实体。
如果您想 select 超出实体范围的任何内容,则需要使用 addSelect('yourentity.attribute')
使 selection 显式化。