如何在PHP中使用此类属性,以便获取所有类实例的总值?

时间:2012-07-02 08:06:32

标签: php arrays oop object yii

我正在使用PHP MVC框架,Yii。我有一个名为类别的模型,与产品模型有HAS_MANY的关系。两个模型类都扩展CActiveRecord

我正在寻求帮助,以了解OOP在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实际上是一个对象而不是数组而无法实现?是吗?

我很高兴收到有助于解释我所遗漏的文章或文档。

由于

1 个答案:

答案 0 :(得分:1)

实际上$category->products是一个对象数组。这就是为什么你不能在对象属性上使用array_sum。通过在Category模型

中添加STAT关系,您可以轻松获得总和
'total_inventory'=>array(self::STAT, 'Product', 'cat_id','select'=>'SUM(inventory)')

您可以通过拨打total_inventory

获取$category->total_inventory