2

我对编程、php、Magento 以及最重要的是 SQL 还很陌生。如果这是一个愚蠢的问题,请原谅我。

我正在尝试使用 Magento 集合在两个不同的表中选择两个不同的列并加入它们。这两列包含遵循相同约定的产品编号,我的目标是获取并显示字段 a(我们称之为“product_id”)包含字段 b(“item_nr”)包含的产品编号。

到目前为止,这是我的函数,当前位于将由控制器操作调用的模型中。

public function importCompare() {

    $orderlistCollect = Mage::getModel('personal_orderlist/orderlist')->getCollection()
        ->addFieldToSelect('product_id')
        ->addFieldToFilter('b.item_nr', null)
        ->getSelect()
        ->joinLeft( array('b'=>$this->getTable('catalog/product')),   'main_table.product_id = b.item_nr', array('b.item_nr'));

    echo $orderlistCollect;
}

通过回显变量,我得到以下查询。

SELECT `main_table`.`product_id`, `b`.`erp_item_nr`
        FROM `mag1personal_orderlist` AS `main_table`
        LEFT JOIN `` AS `b` ON main_table.product_id = b.item_nr
        WHERE (b.item_nr = '')

这看起来非常接近我想要的,但是最大的问题是我不知道如何检索我应该从这个查询中获得的信息并回显它。我尝试使用各种集合操作方法均无济于事。乱序使用它们是否也很容易?

任何帮助在这里表示赞赏。

4

1 回答 1

1

集合使用 PHP 标准库中的接口来实现for each-able 行为。

如果这听起来像希腊语,试试这个。

foreach($orderlistCollect as $item)
{
    $data = $item->getData();
    var_dump($data);

    $sku = $item->getSku();
    var_dump($sku);

    $sku = $item->getData('sku');
    var_dump($sku);
}

如果您有兴趣学习如何使用自己的 PHP 对象,手册的对象迭代部分是一个很好的起点。但是,没有必要深入研究这一点——只需像对待对象数组一样对待集合,就可以了。

于 2013-05-08T18:31:14.097 回答