2010-07-05 3 views
0

En travaillant sur une petite application de magasin, je récupère toutes les couleurs d'un article en utilisant la fonctionnalité "findManyToManyRowset" de Zend Framework.Zend Framework: count() renvoie 1 sur le résultat vide avec findManyToManyRowset (...)

Exemple:

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

Certains articles n'ont pas et les couleurs attribuées. Je l'ai testé en utilisant count ($ colors) sur le résultat de "findManyToManyRowset". Mais au lieu du résultat attendu "0" je reçois un "1" en conséquence, ce qui me rend confus.

Pourquoi est-ce? Et comment puis-je tester, si un résultat est vide à la place?

Merci :) Stephan

Répondre

1

Depuis le compte est 1, avez-vous l'objet de dumping que les couleurs $ pour voir ce de jeu de lignes est dans l'ensemble de lignes? Évidemment, il y a quelque chose dedans.

print_r($colors->toArray()); 
0

oui, je l'ai fait. Le tableau protégé _data était vide. C'est pourquoi je suis confus :)

Mais lorsque vous écrivez ceci, quelque chose me vient à l'esprit. J'ai changé la méthode "toArray" dans la classe rowset de la couleur pour répondre à mes besoins (modification de la mise en forme des données). Peut-être que c'est le problème?

public function toArray() { 

    $toArray = array(); 

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

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

    return $toArray; 
} 
3

findManyToManyRowset renvoie un objet de la classe Zend_DbTable_Rowset. Par conséquent count ($ colors) ne retournera pas le nombre de lignes.

La façon d'obtenir le nombre de lignes est:

$colors->count(); 
Questions connexes