0

在下面的代码中,我打印了一个产品列表、一个库存列表,出于某种原因,使其工作的唯一方法是在循环它们的同时再次实例化产品。否则我会错过价格和库存。

有任何想法吗?

这是我的代码,

        $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>&pound;".number_format($p->getPrice(), 2)."</td>";
            echo "<td>".$p->getData('stock_item/qty')."</td>";

            $i++;
//            if($i == 1){ break; }
        }

        ?></tbody>
        </table>
        <?php
4

2 回答 2

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();
于 2012-04-20T11:59:06.037 回答
1

在加载集合之前,您应该添加这些属性(价格和库存状态):

$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');
于 2012-04-20T14:44:30.097 回答