2010-07-05 2 views
0

Zend Framework의 "findManyToManyRowset"기능을 사용하여 작은 상점 애플리케이션에서 모든 색상을 가져옵니다.Zend Framework : count()는 findManyToManyRowset (...)을 사용하여 빈 결과에 1을 반환합니다.

예 :

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

기사 중 일부는이없고 색상이 할당. "findManyToManyRowset"결과에 count ($ colors)를 사용하여 테스트합니다. 하지만 예상되는 결과 "0"대신 "1"이 결과로 나 혼란 스럽습니다.

왜 그럴까요? 결과가 비어 있다면 어떻게 테스트 할 수 있습니까? 카운트가 1이기 때문에

은 $ 색상이 행 집합에 뭐가 있는지보고 행 집합 밖으로 버려진 한 당신 : 스테판

답변

1

감사? 분명히 뭔가가 있습니다.

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; 
} 
3

findManyToManyRowset은 Zend_DbTable_Rowset 클래스의 개체를 반환합니다. 따라서 count ($ colors)는 행 수를 반환하지 않습니다.

행 수를 얻을 수있는 방법은 다음과 같습니다

$colors->count();