Alasan Anda mendapatkan kesalahan adalah bahwa metode ini Mage_Sales_Model_Resource_Collection_Abstract::addAttributeToSelect
hanya berfungsi untuk atribut individual dan bukan array atribut.
Ini hanya berfungsi untuk atribut individual karena itu akan memvalidasi panggilan untuk memastikan atribut itu nyata.
public function addAttributeToSelect($attribute)
{
$this->addFieldToSelect($this->_attributeToField($attribute));
return $this;
}
Ketika Anda melihat ke dalam, Mage_Sales_Model_Resource_Collection_Abstract::_attributeToField
Anda melihat bahwa itu berfungsi sebagai berikut.
- Jika Anda melewatkan string maka itu hanya akan mengembalikan string,
- Jika Anda melewatkan objek maka itu akan memvalidasi bahwa ini adalah objek bertipe
Mage_Eav_Model_Entity_Attribute
dan mengembalikan kode atribut,
Kode tersebut terlihat sebagai berikut:
protected function _attributeToField($attribute)
{
$field = false;
if (is_string($attribute)) {
$field = $attribute;
} elseif ($attribute instanceof Mage_Eav_Model_Entity_Attribute) {
$field = $attribute->getAttributeCode();
}
if (!$field) {
Mage::throwException(Mage::helper('sales')->__('Cannot determine the field name.'));
}
return $field;
}
Jadi pilihan Anda adalah yang berikut seperti yang saya lihat:
- Cukup panggil
addFieldToSelect
dengan array kode atribut. Karena Anda hanya meneruskan kode dan bukan objek, Anda tidak akan mendapatkan validasi, tetapi mungkin Anda tidak memerlukan ini dalam kasus Anda.
- Panggil
addAttributeToSelect
sekali untuk setiap atribut.
Saya akan menyarankan dalam opsi kasus Anda satu akan menjadi yang terbaik.