【问题标题】:Converting an array to a collection in Magento在 Magento 中将数组转换为集合
【发布时间】:2011-08-02 11:48:05
【问题描述】:

我有一个数组对象,它是数据库中 magento fetchall 的输出,我希望将其转换为 Collections 类的对象,以便我可以实现分页并使用此集合与其他表连接。你能帮帮我吗?卡了好久!!

【问题讨论】:

    标签: magento


    【解决方案1】:

    为了将数组转换为集合对象:
    1> 创建 Varien_Db_Collection 的实例

    $collection = new Varien_Data_Collection();
    

    2> 创建 Varien_Object 的实例并设置数组数据

    $rowObj = new Varien_Object();
    $rowObj->setData($row);
    

    3> 最后将 Varien_Object 添加到 Collection 实例中

    $collection->addItem($rowObj);
    

    4> 现在 $collection 是一个集合对象。

    【讨论】:

    • magento-1.8 中没有类Varien_Db_Collection。我收到此错误Fatal error: Class 'Varien_Db_Collection' not found
    • 尝试使用 'Varien_Data_Collection_Db' 而不是 'Varien_Db_Collection'。
    • 我在使用 Varien_Data_Collection_Db 时遇到了奇怪的错误,但 Varien_Data_Collection 在此答案中发布的代码可以正常工作
    • 我刚刚使用了上面的代码,它工作正常。因此,这应该是正确答案,而不是@Rafael Kassner 提供的答案。显然,使用 Varien_Data_Collection 类..
    【解决方案2】:

    Magento 没有内置的转换器,但您可以使用 Collections 编写查询,或根据数组中的所有 id 加载 Collection。

    【讨论】:

    • 在 Magento Enterprise 1.12 中,有一种方法可以将数组转换为集合。参见:Mage_Eav_Model_Entity_Collection_Abstract::importFromArray
    【解决方案3】:

    此外,可以使用addItem 方法填充集合。

    【讨论】:

    • 你能详细说明一下吗?所以我有一个数组,我可以实例化一个集合并使用集合对象的additem方法将数组中的每个项目添加到集合中吗?
    • 是的,您(可能)必须遍历您的数组,然后在每个项目上调用 $collection->addItem($item) 以添加到集合中。
    • @Nick: 这个$collection是哪个类对象?
    【解决方案4】:

    如果你有一组 ids $product_ids,你可以使用:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-11
      • 1970-01-01
      • 2016-05-12
      • 1970-01-01
      • 2011-07-06
      • 2011-03-05
      • 2018-02-16
      • 2015-07-31
      相关资源
      最近更新 更多