小编Zob*_*a82的帖子

Magento Collection,如何获取特定字段的值数组

从Collection开始,我需要获取特定字段的值数组.我称之为字段my_id.

要做到这一点,我使用Varien_Data_Collection::setDataToAll()on my Collection ..就这样:

$collection_fields_array = $collection->setDataToAll(array('my_id'))->toArray(array('my_id'));
Run Code Online (Sandbox Code Playgroud)

..我得到的是这样的:

Array
(
    [0] => Array
        (
            [my_id] => 71e1bd18
        )

    [1] => Array
        (
            [my_id] => 70d47a69
        )

    [2] => Array
        (
            [my_id] => 687bed84
        )

    [3] => Array
        (
            [my_id] => 673df159
        )

    [4] => Array
        (
            [my_id] => 66690a4c
        )

    [5] => Array
        (
            [my_id] => 65994440
        )
)
Run Code Online (Sandbox Code Playgroud)

但是..如果我的Collection包含大量项目.. setDataToAll()变得太耗时并最终崩溃所有2Gb(!!!)的内存...这是因为它在所有项目之间的迭代.

另一种获取字段值数组的方法没有这种解决方法吗?

magento

11
推荐指数
2
解决办法
2万
查看次数

Magento在两个过滤的自定义集合之间加入

我有两个自定义模型(“ myorder”和“ myarticle”)。每个“ myarticle”都有一个外键“ rif_ord_app”,它指向相关的“ myorder”字段“ rif_ordine_vsp”。我需要过滤两个集合,然后使用两个字段“ rif_ord_app”和“ rif_ordine_vsp”将它们加入。

例如:

我过滤“ myorders”集合:

$collection_orders = Mage::getModel('mycomp_logistic/myorder')->getCollection()
    ->addAttributeToSelect('*')
    ->addAttributeToFilter('customer_id', array('in' => array_values($arrayCustomersId)))
    ->addAttributeToFilter('payment_done_online', array('eq' => ($filter['is_from_where'] == 'from_web')))
    ->addAttributeToFilter('pdv_ritiro_id', array('eq' => $filter['pdv_ritiro_code']))
    ->addAttributeToFilter('pdv_ordinante_id', array('eq' => $filter['pdv_ordinante_code']))
    ->addAttributeToFilter('rif_ordine_vsp', array('eq' => $filter['num_ord']))
    ->addAttributeToFilter('data_ordine', array('from' => $daydate));
Run Code Online (Sandbox Code Playgroud)

...然后我过滤“ myarticle”收藏集:

$collection_articles = Mage::getModel('mycomp_logistic/myarticle')->getCollection()
    ->addAttributeToSelect('*')
    ->addAttributeToFilter('num_bolla', array('eq' => $filter['cod_bolla']))
    ->addAttributeToFilter('sscc', array('eq' => $filter['sscc']))
    ->addAttributeToFilter('stato', array('eq' => $filter['st_art']));
Run Code Online (Sandbox Code Playgroud)

..最后...我没有设法加入这两个系列。

我尝试过这样的事情:

$tbl_order = Mage::getSingleton('core/resource')->getTableName('mycomp_logistic/myorder');
$collection_articles = $collection_articles->getSelect()->join(array('t2' => $tbl_order), 'main_table.rif_ord_app = …
Run Code Online (Sandbox Code Playgroud)

php collections filtering join magento

5
推荐指数
1
解决办法
1354
查看次数

标签 统计

magento ×2

collections ×1

filtering ×1

join ×1

php ×1