Doctrine查询条件不起作用

时间:2015-03-15 19:06:52

标签: symfony doctrine twig

我在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,怎么做呢?

1 个答案:

答案 0 :(得分:1)

调用createQueryBuilder('p')将在p上添加select语句,该语句表示repo链接到的实体。

如果您想要选择任何超出实体范围的内容,则需要使用addSelect('yourentity.attribute')来明确选择。