【问题标题】:How can I SUM this class property in PHP so I get the total value for all class instances?如何在 PHP 中对此类属性求和,以便获得所有类实例的总值?
【发布时间】:2012-07-02 15:23:42
【问题描述】:

我正在使用 PHP MVC 框架,Yii。我有一个名为 Category 的模型,它与 Product 模型具有 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-&gt;products实际上是一个对象,而不是一个数组而无法使用?对吗?

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

谢谢

【问题讨论】:

    标签: php arrays oop object yii


    【解决方案1】:

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

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

    您可以通过拨打$category-&gt;total_inventory在任何地方获取total_inventory

    【讨论】:

      猜你喜欢
      • 2013-03-10
      • 2017-08-04
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      • 2014-03-13
      • 1970-01-01
      • 2019-08-31
      相关资源
      最近更新 更多