2013-11-29 3 views
0

У меня есть пользовательский атрибут для продуктов, и я могу сказать, что у меня есть 3-4 продукта, которые имеют одинаковое значение для этого атрибута. Итак, теперь я хочу загрузить эти 3 продукта и сохранить их в массиве. Вот что я делаю:Извлечение нескольких продуктов по специальному атрибуту [magento]

$all_products = array(); 
$count = 0; 
$collection = Mage::getModel('catalog/product')->getCollection(); 
$collection->addAttributeToSelect('ordernumber'); 
foreach($collection as $product) 
{ 
    $all_products[count] = array ('sku' => $product->getSku(), 'qty' => $this->getRequest()->get('qty'), 'size' => $product->getSize()); 
    $count++; 
} 
return $all_products; 

Примечание: ordernumber имеет значение, я просто получить его из другого места.

В любом случае, когда я запускаю его - у меня нет значений. Когда я отлаживаю - отладчик заканчивается на $products[count] = ....

Я попытался загрузить один продукт только по специальному атрибуту - Mage::...->loadByAttribute('ordernumber', $ordernumber);, и он отлично работал.

Итак, я предполагаю, что я не делаю что-то правильно с манипуляциями с коллекцией или с массивом, хотя я видел несколько примеров, из которых я получил эту идею.

Что я делаю неправильно?

ответ

0

Попробуйте так:

$all_products = array(); 
$count = 0; 
$collection = Mage::getModel('catalog/product')->getCollection(); 
$collection->addAttributeToSelect('ordernumber'); 
//add a filter if needed - uncomment the next 2 lines and adjust the value or $ordernumber 
//$ordernumber = '123'; 
//$addAttributeToFilter('ordernumber', $ordernumber) 

foreach($collection as $product) 
{ 
    $all_products[$count] = array ('sku' => $product->getSku(), 'qty' => $this->getRequest()->get('qty'), 'size' => $product->getSize()); 
    $count++; 
} 
return $all_products; 
Смежные вопросы