0


0

Zend Framework:count()は、findManyToManyRowset(…​)で空の結果に1を返します

小さなショップアプリケーションで作業している間、Zend Frameworkの「findManyToManyRowset」機能を使用して記事のすべての色を取得します。

例:

$colors = $article->findManyToManyRowset('Shop_Colors',
          'Shop_ArticlesToColors');

一部の記事には色が割り当てられていません。 「findManyToManyRowset」の結果に対してcount($ colors)を使用してテストします。 しかし、期待される結果「0」の代わりに、結果として「1」が得られ、混乱します。

何故ですか ? 代わりに結果が空の場合、どのようにテストできますか?

ありがとう:)ステファン

3 Answer


3


findManyToManyRowsetは、クラスZend_DbTable_Rowsetのオブジェクトを返します。 したがって、count($ colors)は行数を返しません。

行数を取得する方法は次のとおりです。

$colors->count();


1


カウントは1なので、その$ colors行セットをダンプして、行セットの内容を確認しましたか? 明らかに何かがそこにあります。

print_r($colors->toArray());


0


はい、そうしました。 保護された配列_dataは空でした。 それが私が混乱している理由です:)

しかし、あなたがこれを書いていると、何かが思い浮かびます。 色の行セットクラスのメソッド「toArray」を自分のニーズに合わせて変更しました(データのフォーマットを変更しました)。 たぶんそれが問題ですか?

public function toArray() {

    $toArray = array();

    if (count($this->_data) > 0) {
        foreach ($this as $row) {

            $toArray[$row['color_id']] = $row['color'];
        }
    }

    return $toArray;
}