2017-09-02 38 views
0

私はリポジトリ から私のプロダクトを取得しようとしている登録しよう存在 " 質問ビルダーで何が問題になっていますか? おかげsymfonyのcreateQueryBuilder私は3つのテーブルを持っている

は、私はスクリーンショットを追加し、[OK]
class ProduitsRepository extends \Doctrine\ORM\EntityRepository { 

    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();  
    } 
} 

enter image description here

これは、これは私の小枝ビューproduits.html.twigである私のコントローラ

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 
    )); 
} 

ある

<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> 

答えて

0

申し訳ありませんが、私はコメントを投稿できませんが、私たちにあなたの小枝ファイルを与える必要があります、それは私たちを助けるかもしれません。また、私はそれが何も変更はないと思うが、私はこのようなクエリ記述します。

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

編集:あなたは間違ってコントローラのアクションからビューをレンダリングしているようなあなたのスクリーンショットを見てみると、それはそうです。 categorieActionという1つのアクションと、produitsActionというもう1つのアクション(間違っていると思われる)があります。衝突を避けるためには、これらの2つのアクションに対して異なるルートを作成する必要があります。

+0

okスクリーンショットとコードを追加しました – wildnano

+0

@wildnano私は自分の答えを編集しました。 –

+0

Right Thanks - 悪いメソッドが私のルーティングで呼び出されました。レンダーで配列を消去しました:array( 'produits' => $ produits)); $ em = $ this-> getDoctrine() - > getManager(); $ produits = $ em-> getRepository( 'GbaBundle:Produits') - > findAll(); – wildnano

関連する問題