0

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

例:

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

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

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

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

4

3 に答える 3

3

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

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

$colors->count();
于 2011-11-25T17:42:26.677 に答える
1

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

print_r($colors->toArray());
于 2010-07-05T18:42:25.473 に答える
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;
}
于 2010-07-06T08:37:23.063 に答える