Вопрос

У меня простой индексконтроллер.

Когда я использую это:

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

Это не показывает весь продукт (всего лишь несколько), какова может быть причина? Я хотел бы загрузить все продукты, не имеет значения, каков статус.

ОБНОВИТЬ:Благодаря Алану Шторму я нашел ответ. При использовании: echo (string) $collection->getSelect(); Я видел: (_table_name.store_id = 5)

Установив его на storeid 0 («администратор», так сказать), я смог увидеть весь продукт.

Звучит логично ... как всегда :-)

Это было полезно?

Решение

К сожалению, есть слишком много причин, чтобы перечислить (или даже знать), почему ваша коллекция продуктов может не возвращать все продукты, которые, по вашему мнению, должны. Это может быть ошибка, может быть расширение, которое вы установили, или, возможно, у вас есть недоразумение относительно того, что возвращается в коллекции по умолчанию.

К счастью, это относительно простая вещь, чтобы отлаживать себя. Вы можете взглянуть на SELECT оператор, используемый коллекцией для заполнения его начальных объектов.

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

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

С этим SQL в руках, должно быть довольно легко сказать, почему Magento не возвращает объекты, которые, по вашему мнению, должны.

Другие советы

Есть несколько способов получить подсчет предметов в коллекции. К сожалению, PHP внутренний count Функция, вероятно, не самый исполнительный способ.

Вот два других, чтобы попробовать:

echo $collection->count();

echo $collection->getSize();

Я подозреваю, что происходит либо ваша коллекция, не так глубока, как вы думаете; Есть проблема с памятью с PHP count функция (итерация коллекции как массив); или же count не знает, сколько на самом деле есть предметы Из -за ленивой загрузки, где коллекция на самом деле не загружается в то время, когда вы просите ее подсчета.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top