Zend Framework:count()在findManyToManyRowset(...)的空结果上返回1

时间:2010-07-05 18:24:53

标签: database zend-framework count zend-db relationship

在小型商店应用程序上工作时,我使用Zend Framework的“findManyToManyRowset”功能获取文章的所有颜色。

示例:

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

部分文章没有分配颜色。我在“findManyToManyRowset”的结果上使用count($ colors)测试它。但是,取代预期的结果“0”,我得到一个“1”,这让我感到困惑。

为什么?如果结果为空,我该如何测试呢?

谢谢:) 斯蒂芬

3 个答案:

答案 0 :(得分:3)

findManyToManyRowset返回Zend_DbTable_Rowset类的对象。因此count($ colors)不会返回行数。

获取行数的方法是:

$colors->count();

答案 1 :(得分:1)

由于计数为1,你是否抛弃了$ colors rowset以查看行集中的内容?显然有些东西在里面。

print_r($colors->toArray());

答案 2 :(得分:0)

是的,我做到了。受保护的数组_data为空。这就是为什么我很困惑:)

但是当你写这篇文章时,我想到了一些东西。我在color的rowset类中更改了“toArray”方法以符合我的需要(更改了数据的格式)。也许这就是问题?

public function toArray() {

    $toArray = array();

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

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

    return $toArray;
}