2016-11-15 9 views
1

のsymfonyからのArrayCollectionを数える2.8反復や小枝

[OK]を、私はこのようになりますカテゴリーエンティティがあります。

class Category 
{ 

    // ... // 
    /** 
    * @ORM\OneToMany(targetEntity="Classified", mappedBy="category") 
    */ 
    private $classified; 

    // ... // 

    public function __construct() 
    { 
     $this->classified = new ArrayCollection(); 
    } 

} 

をし、クラシファイドエンティティは次のようになります。 クラスは

{ 
    /** 
    * @ORM\ManyToOne(targetEntity="Category", inversedBy="classified") 
    */ 
    private $category; 
} 

を分類します

私のresult.html.twigでは、コントローラを次のようにレンダリングするよう呼びかけました:

基本的に順番にクエリのCategoryRepositoryを呼び出すカテゴリーコントローラ

class CategoryController extends Controller 
{ 
    public function displayCategoryPanelListAction(Request $request) 
    { 

     $em = $this->getDoctrine()->getManager(); 
     $categories = $em->getRepository('ClassifiedBundle:Category') 
        ->findAllOrderedByName(); 


     return $this->render('ClassifiedBundle:Front/Widgets:category-panel-list.html.twig', 
      array(
       'categories' => $categories 
      )); 
    } 
} 

を呼び出し

最後に、カテゴリパネル-list.html.twigにレンダリングされる
class CategoryRepository extends EntityRepository 
{ 
    public function findAllOrderedByName() 
    { 

     $query = $this->createQueryBuilder('c') 
      ->select('c, cc') 
      ->leftJoin('c.classified', 'cc') 
      ->orderBy('c.name', 'ASC') 
      ->getQuery() 
      ->getResult(); 

     return $query; 
    } 
} 

<ul> 
    {% for c in categories %} 
    <li> 
     <a href="#"> 
     <i class="fa {{ c.icon }}"></i> 
     {{ c.name }} <span class="category-counter">{# COUNT SHOULD GO HERE#}</span> 
     </a> 
    </li> 
    {% endfor %} 

</ul> 

ここで、これらはすべて、分類された配列コレクション部分とは別に問題なく動作します。私は{{ c.classified|length }}を試しましたが、これは致命的なエラーをもたらします。

ダンプが格好よくて、分類されたコレクションのエントリが表示されますが、カウントする方法はわかりません。カテゴリには空の機密コレクションがあります。 enter image description here

+0

を使用する必要があります

"私が試してみました{{c.classified |長さ}}が、これは致命的なエラーが発生します。" - 致命的なエラーは何ですか? – Malcolm

答えて

0

あなただけ

{{ c.classified.count }} 
0

{{ c.classified|length }}アレイに適用された教義の方法を使用して試みることができます。

オブジェクトc.classifiedは、配列ではなくPersistCollectionです。あなたは{{ c.classified.count }}