Zend Framework: count () возвращает 1 для пустого результата с помощью findManyToManyRowset (...) - PullRequest
0 голосов
/ 05 июля 2010

Работая над приложением для небольшого магазина, я выбираю все цвета статьи, используя функциональность Zend Framework «findManyToManyRowset».

Пример:

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

Некоторые статьи неи назначенные цвета.Я проверяю это, используя count ($ colors) по результату "findManyToManyRowset".Но вместо ожидаемого результата «0» я получаю «1», что меня смущает.

Почему это?И как я могу проверить, если результат пуст?

Спасибо :) Стефан

Ответы [ 3 ]

3 голосов
/ 25 ноября 2011

findManyToManyRowset возвращает объект класса Zend_DbTable_Rowset.Поэтому count ($ colors) не будет возвращать количество строк.

Способ получения количества строк:

$colors->count();
1 голос
/ 05 июля 2010

Поскольку счетчик равен 1, вы выбросили этот набор строк $ colors, чтобы увидеть, что находится в наборе строк?Очевидно, что-то в этом есть.

print_r($colors->toArray());
0 голосов
/ 06 июля 2010

да, я сделал это.Защищенный массив _data был пуст.Вот почему я запутался :)

Но когда вы пишете это, что-то приходит мне в голову.Я изменил метод toArray в классе набора цветов для соответствия моим потребностям (изменил форматирование данных).Может в этом проблема?

public function toArray() {

    $toArray = array();

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

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

    return $toArray;
}
...