2013-05-10 2 views
0

이 질문은 매우 간단하다는 것을 알고 있습니다. 하지만 Google에서 찾지 못했습니다. 나는 애프터 케이크에 아주 새롭다.케이크 - 데이터를 계산하는 방법에 대해 혼동했습니다

예를 들어 나는 ProductCategory 두 가지 모델을 가지고 있습니다.

Product index에서 사용 가능한 카테고리 목록과 해당 카테고리에있는 제품의 수량을 표시하고 싶습니다. 아래처럼 :

Food (10) 
Beverages (7) 
... 

사용 가능한 범주가 성공적으로 반복되었지만 계산 방법은 확실하지 않습니다. 나는 많은 변화를 시도하고 오류 같은 ArrayHelper not found 또는 ProductHelper not found

누구든지 해결책이 점점 계속

<?php foreach($categories as $c): ?> 
    <li> ... <?php echo $this->$c->Product->find('count') ?> </li> 
<?php endforeach; ?> 
// The ... part is echo-ing the category name 

: 다음은 내 루프는?

감사

편집

난 당신이 제안 foreach 루프를 추가하기 전에이 내 ProductController 코드입니다.

public function index() { 
      //the first two lines is default from cake bake 
     $this->Product->recursive = 0; 
     $this->set('products', $this->paginate()); 
     $categories = $this->Product->Category->find('all'); 
     $this->set('categories', $categories); 
    } 
+1

$ 카테고리 데이터를 가져 오는 컨트롤러 코드를 표시 할 수 있습니까? –

+0

컨트롤러 코드를 업데이트했습니다. 도움을 주셔서 감사합니다 ... – hrsetyono

답변

1

당신 대신 당신이 제품은 컨트롤러 자체에서 당신의 배열에 셀 추가 할 수 있습니다,보기 파일에 model를 호출하려고하는, 같은 예제 코드는 다음과 같습니다

$categories = $this->Product->Category->find('all',array('recursive'=>-1)); 
foreach($categories as $key => $category){ 
    $categories[$key]['ProductCount'] = $this->Product->find('count', 
    array(
    'conditions'=>array('Product.category_id'=>$category['Category']['id']) 
    ) 
); 
} 
: 컨트롤러에

ProductCount은 제품 이름으로 바꿀 수 있습니다.

+0

감사합니다, 내가 시도하고 성공 여부를 알려 드리겠습니다. – hrsetyono

+0

'$ this를 사용하면'object가 아닌 객체에서 find()를 호출합니다 .' 오류가 발생했습니다. -> 범주 ... '. 그것은 코드가'ProductController'에 있기 때문입니까? – hrsetyono

+1

@DarcCode 당신이 할 수있는 방법의 예일뿐입니다. 컨트롤러에 따라 변경해야합니다. $ this-> Category 대신 $ this-> Product를 의미합니다. –

2

각 요청마다 계산을 계산하는 대신 counter cache fea 각 카테고리에 대한 제품 수를 저장 한 다음 간단히 표시하십시오.

+0

흠 나는 매뉴얼을 시험해 보았지만,'undefined index : product_count' 에러를 주었다. 그것을 사용하기 위해 우리는'$ category [ 'Category'] [ 'product_count']'맞습니까? – hrsetyono

+0

신경 쓰지 마, 내 카테고리 테이블에'product_count' 필드를 추가하는 것을 잊어 버렸습니다. – hrsetyono

관련 문제