2013-05-10 5 views
0

Я знаю, что этот вопрос очень прост. Но я не могу найти его в Google. Я очень новичок в торгах.торт - Смутно как считать данные

Например, у меня есть две модели: Product и Category.

Product index Я хочу показать список доступных категорий и количество Продуктов в этой категории. Как показано ниже:

Food (10) 
Beverages (7) 
... 

Я успешно закрепил доступные категории, но не уверен, как считать это. Ниже мой цикл:

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

Я пробовал много вариаций и продолжать получать ошибки как ArrayHelper not found или ProductHelper not found

Кто-нибудь есть решение?

Благодаря

EDIT

Это мой ProductController код, прежде чем я добавил цикл foreach вы предложили.

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

Я обновил код контроллера. Спасибо за помощь man ... – 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 -> категории ... '. Это потому, что код находится в 'ProductController'? – hrsetyono

+1

@DarcCode, который был всего лишь примером того, как вы могли это сделать ... вам нужно изменить его в соответствии с вашим контроллером, я имею в виду что-то вроде $ this-> Product вместо $ this-> Category. –

2

Вместо расчета счетчика при каждом запросе, использовать counter cache FEA чтобы сохранить количество продуктов для каждой категории, а затем просто отобразить это.

+0

Хмм я попробовал руководство, но он продолжает давать мне «неопределенный индекс: product_count». Чтобы использовать его, мы просто набираем '$ category ['Category'] ['product_count']' right? – hrsetyono

+0

Ничего, я забыл добавить поле 'product_count' в таблицу категорий – hrsetyono