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