0

私はPHPMVCフレームワークYiiを使用しています。製品モデルと関係のあるCategoryというモデルがあります。どちらのモデルクラスもCActiveRecordを拡張します。HAS_MANY

私は、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実際には配列ではなくオブジェクトであるために使用できませんか?そうですか?

不足しているものを説明するのに役立つ記事やドキュメントが提供されてうれしいです。

ありがとう

4

1 に答える 1

1

実際に$category->productsは、はオブジェクトの配列です。array_sumそのため、オブジェクト属性で使用することはできません。モデルにSTAT関係を追加することで、簡単な方法で合計を取得できます。Category

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

total_inventory電話することでどこにでも行くことができます$category->total_inventory

于 2012-07-02T08:40:02.093 に答える