2016-11-15 11 views
1

심포니에서의 ArrayCollection을 계산 2.8으로 반복 또는 나뭇 가지

좋아, 나는 다음과 같습니다 카테고리의 실체가 :

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