从Magento Collection获取数据

Tha*_*anu 3 php collections magic-function magento

我有一个集合,其中包含一行数据.如果我这样做,

$collection->getData();
Run Code Online (Sandbox Code Playgroud)

它给我一个像下面的数组,

  array(1) {
    [0] => array(3) {
       ["id"] => string(1) "1"
       ["field1"] => string(10) "Field 1 Data"
       ["field2"] => string(10) "Field 2 Data"
    }
  }
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,$collection->getField1()它说Undefined Method.据我所知,php magic getter应该像这样工作.不是吗?

任何想法如何在没有foreach构造的情况下获得此值.

Ala*_*orm 12

魔术getter和setter方法仅适用于继承自的Magento对象Varien_Object.在模型和块的实践中.集合既不是模型也不是块.集合是一个foreach包含0-N模型对象的能够对象.

集合的getData方法将返回集合中每个模型的原始PHP数组.

#File: lib/Varien/Data/Collection/Db.php
public function getData()
{
    if ($this->_data === null) {
        $this->_renderFilters()
             ->_renderOrders()
             ->_renderLimit();
        $this->_data = $this->_fetchAll($this->_select);
        $this->_afterLoadData();
    }
    return $this->_data;
}
Run Code Online (Sandbox Code Playgroud)

您可能想要做的是从集合中获取第一个模型,然后获取其数据.

$data = $collection->getFirstItem()->getData();
$field1 = $collection->getFirstItem()->getField1();
Run Code Online (Sandbox Code Playgroud)

  • $ data = $ collection-> getFirstItem()-> getData(); 是我一直在寻找的东西。谢谢 (3认同)