Frage

Ich habe einen einfachen Indexcontroller.

Wenn ich das benutze:

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

Es zeigt nicht das gesamte Produkt (nur ein paar). Was könnte der Grund dafür sein? Ich möchte alle Produkte laden, egal wie der Status ist.

AKTUALISIEREN:Dank Alan Storm fand ich die Antwort. In Verwendung:: echo (string) $collection->getSelect(); Ich sah: (_table_name.store_id = 5)

Durch das Einstellen von StoreID 0 ('admin' so zu sagen) konnte ich das gesamte Produkt sehen.

Klingt logisch ... wie immer :-)

War es hilfreich?

Lösung

Leider gibt es zu viele Gründe, aufzulisten (oder überhaupt zu wissen), warum Ihre Produktsammlung möglicherweise nicht alle Produkte zurückgibt, von denen Sie glauben, dass sie sie sollten. Es kann sich um einen Fehler handeln, möglicherweise eine Erweiterung, die Sie installiert haben, oder dass Sie ein Missverständnis darüber haben, was in einer Standardsammlung zurückgegeben wird.

Glücklicherweise ist dies eine relativ einfache Sache, sich selbst zu debuggen. Sie können einen Blick auf die werfen SELECT Anweisung, die von der Sammlung verwendet wird, um ihre anfänglichen Objekte zu bevölkern.

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

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

Mit diesem SQL in der Hand sollte es ziemlich leicht sein zu sagen, warum Magento die Objekte nicht zurückgibt, von denen Sie glauben, dass sie es sollten.

Andere Tipps

Es gibt mehr als eine Möglichkeit, die Anzahl von Gegenständen in einer Sammlung zu erhalten. Leider der PHP intern count Funktion ist wahrscheinlich nicht die leistungsstärkste Art.

Hier sind zwei andere, die Sie versuchen sollten:

echo $collection->count();

echo $collection->getSize();

Was ich vermute, ist, dass entweder Ihre Sammlung nicht so tief ist, wie Sie denken. Es gibt ein Speicherproblem mit dem PHP count Funktion (iteriert die Sammlung als Array); oder count ist sich nicht bewusst, wie viele Artikel dort tatsächlich sind wegen fauler Ladens, wo die Sammlung zu der Zeit nicht geladen wird, wenn Sie nach ihrer Zählung fragen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top