Symfony createQueryBuilder JOIN



我正在尝试从存储库中获取我的产品我有3张桌子: - 类别 - 包含caporie_id的类型 - 包含types_id

的产品

我的树枝视图返回"不存在变量产品"我的QueryBuilder出了什么问题?谢谢

class ProduitsRepository extends DoctrineORMEntityRepository {
    public function byCategorie($categorie) {
        $qb = $this->createQueryBuilder('p')
                ->select('p') // Entity Produits
                ->join('p.type', 't')
                ->addSelect('t') // Entity Types
                ->where('p.type = t.id AND t.categorie = :categorie')
                ->orderBy('p.id')
                ->setParameter('categorie', $categorie);
        return $qb->getQuery()->getResult();      
    }
} 

好吧,我添加了屏幕截图在此处输入图像描述

这是我的控制器

public function categorieAction($categorie)
{
    $em = $this->getDoctrine()->getManager();
    $produits = $em->getRepository('GbaBundle:Produits')->byCategorie($categorie);

    return $this->render('GbaBundle:Default:produits/layout/produits.html.twig', array(
        'produits' => $produits
    ));
}

这是我的树枝视图produits.html.twig

<ul class="thumbnails">
             {% for produit in produits %}
            <li class="span3">
                <div class="thumbnail">
                    <img src="{{ asset('img/holder.png') }}" alt="" width="300" height="300">
                    <div class="caption">
                        <h4>Thumbnail label</h4>
                        <p>100,00 €</p>
                        <a class="btn btn-primary" href="{{ path('gba_presentation') }}">Plus d'infos</a>
                        <a class="btn btn-success" href="{{ path('gba_panier') }}">Ajouter au panier</a>
                    </div>
                </div>
            </li>
              {% endfor %}
            </ul>

对不起,我不能发表评论,但是您应该给我们您的树枝文件,这可能会对我们有所帮助。另外,我认为它不会改变任何东西,但我会写这样的查询:

$this->createQueryBuilder('p')
        ->select('p, t')
        ->join('p.type', 't')
        ->where('t.categorie = :categorie')
        ->orderBy('p.id')
        ->setParameter('categorie', $categorie);

编辑:查看屏幕截图,似乎您正在从错误的控制器操作中呈现视图。您有一个称为categorieAction的动作,另一个(似乎是错误的)称为produitsAction。您应该为这两个动作做不同的路线以避免发生冲突。

相关内容

  • 没有找到相关文章

最新更新