Как я могу использовать этот атрибут класса в PHP, чтобы получить общее значение для всех экземпляров класса?

Я использую фреймворк PHP MVC, Yii. У меня есть модель под названием Категория, которая имеет отношение HAS_MANY к модели продукта . Оба класса модели расширяют CActiveRecord .

Я ищу помощь в понимании определенных способов, которыми ООП работает в PHP.

В моем представлении для моей модели категорий я пытаюсь найти общий инвентарь для категории. Например, я мог бы это сделать:

 <?php $total_inventory = 0; foreach($category->products as $product) $total_inventory = $total_inventory + $product->inventory; echo $total_inventory; ?> 

Почему я не могу это сделать?

 <?php echo array_sum($category->products->inventory); ?> 

Это приводит к ошибке: PHP Notice: Trying to get property of non-object .

Тогда я подумал, может быть, следующее будет работать:

 <?php echo array_sum($category->products->getAttribute('inventory')); ?> 

Однако это приводит к: Fatal error: Call to a member function getAttribute() on a non-object .

Можно ли использовать array_sum() в том, как я пытаюсь просто изменить что-то немного, или это невозможно, потому что $category->products – это фактически объект, а не массив? Это правильно?

Я рад, что мне предоставили статьи или документацию, которые помогут объяснить, что мне не хватает.

благодаря

На самом деле $category->products – это массив объектов. Вот почему вы не можете использовать array_sum для атрибутов объекта. Вы можете легко получить сумму, добавив отношение STAT в модель Category

 'total_inventory'=>array(self::STAT, 'Product', 'cat_id','select'=>'SUM(inventory)') 

и вы можете получить total_inventory где угодно, вызывая $category->total_inventory