Question

Je simple IndexController.

Quand j'utilise ceci:

$collection = Mage::getModel('catalog/product')
                        ->getCollection()
                        ->addAttributeToSelect('*');
echo count($collection);

Il ne montre pas tout le produit (que quelques-uns), ce qui pourrait la raison de ce être? Je voudrais charger tous les produits, peu importe ce que l'état est.

Mise à jour: Merci à Alan Tempête j'ai trouvé la réponse. En utilisant: echo (string) $collection->getSelect(); j'ai vu: (_table_name.store_id = 5)

En mettant à storeId 0 ( « admin » pour ainsi dire) j'ai pu voir tout le produit.

Sons logique ... comme toujours: -)

Était-ce utile?

La solution

Malheureusement, il y a trop de raisons à la liste (ou même de savoir) pourquoi votre collection de produit peut ne retourneriez pas tous les produits que vous pensez qu'il devrait. Il peut être un bug, peut être une extension installée, ou peut être vous avez un malentendu quant à ce qui est retourné dans une collection par défaut.

Heureusement, cela est une chose relativement simple pour vous déboguer. Vous pouvez jeter un coup d'oeil à la déclaration de SELECT utilisée par la collection pour remplir ses objets initiaux.

$collection = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('*'); 

echo (string) $collection->getSelect();  

Avec cette SQL à la main, il devrait être assez facile de dire pourquoi Magento ne retourne pas les objets que vous pensez qu'il devrait.

Autres conseils

Il y a plus d'une façon d'obtenir le nombre d'éléments dans une collection. Malheureusement, la fonction count interne PHP est probablement pas la façon la plus performante.

Voici deux autres à essayer:

echo $collection->count();

echo $collection->getSize();

Ce que je soupçonne que se passe est soit votre collection est pas aussi profond que vous pensez qu'il est; il y a un problème de mémoire avec la fonction count PHP (itère la collection sous forme de tableau); ou count ne connaît pas le nombre d'articles il y a effectivement en raison de de chargement paresseux, où la collection est pas réellement étant chargé vers le haut au moment où vous vous demandez son compte.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top