在下面的代码中,我打印的是产品列表,库存清单,由于某种原因,使其工作的唯一方法是在循环浏览产品时再次实例化产品。否则我会错过价格和库存。
有什么想法吗?
这是我的代码,
$data = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('name')
->addAttributeToSelect('type_id')
->addAttributeToSelect('sku')
->addAttributeToSort('name', 'ASC')
->addFilter('type_id', 'simple');
?><table dir="ltr" summary="Stock report table">
<thead>
<tr>
<th>Id</th>
<th>Type</th>
<th>SKU</th>
<th>Name</th>
<th>Price</th>
<th>Stock</th>
</tr>
</thead>
<tbody>
<?php
$i = 0;
foreach($data as $product){
$p = Mage::getModel('catalog/product')->load($product->getId());
echo "<tr>";
echo "<td>".$p->getId()."</td>";
echo "<td>".$p->getTypeId()."</td>";
echo "<td>".$p->getSku()."</td>";
echo "<td>".$p->getName()."</td>";
echo "<td>£".number_format($p->getPrice(), 2)."</td>";
echo "<td>".$p->getData('stock_item/qty')."</td>";
$i++;
// if($i == 1){ break; }
}
?></tbody>
</table>
<?php
答案 0 :(得分:1)
看起来Stock不是Catalog模块的一部分!它有自己的名为CatalogInventory的模块,它处理产品的stock_item部分。
所以我不得不添加以下内容,
选择我的收藏时
$data = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('name')
->addAttributeToSelect('type_id')
->addAttributeToSelect('sku')
->addAttributeToSelect('price')
->addAttributeToSort('name', 'ASC')
->addFilter('type_id', 'simple');
然后,当循环实例化库存项目并返回数据项目时,
$stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product)->getQty();
答案 1 :(得分:1)
在加载集合之前,您应该添加这些属性(price和stock_status):
$data = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('name')
->addAttributeToSelect('type_id')
->addAttributeToSelect('sku')
->addAttributeToSort('name', 'ASC')
->addFilter('type_id', 'simple')
->addAttributeToSelect('price')
->addAttributeToSelect('stock_status');