Я использую фреймворк 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