如何在 PHP 中对此类属性求和,以便获得所有类实例的总值



我正在使用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实际上是一个对象而不是数组而不可能?是吗?

我很高兴能收到有助于解释我所缺少的内容的文章或文档。

谢谢

实际上,$category->products是一个对象数组。这就是为什么不能对对象属性使用array_sum的原因。您可以通过在Category模型中添加 STAT 关系来轻松获得总和

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

您可以通过致电$category->total_inventory在任何地方获得total_inventory

最新更新