3

我有一个集合,其中包含一行数据。如果我跟随,

$collection->getData();

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

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

但是当我这样做时,$collection->getField1()它会说未定义的方法。据我所知,php magic getter 应该像这样工作。不是吗?

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

4

1 回答 1

13

神奇的 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;
}

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

$data = $collection->getFirstItem()->getData();
$field1 = $collection->getFirstItem()->getField1();
于 2013-05-14T04:30:12.487 回答