Der Grund, warum Sie den Fehler erhalten, ist, dass die Methode Mage_Sales_Model_Resource_Collection_Abstract::addAttributeToSelect
nur für einzelne Attribute und nicht für ein Array von Attributen funktioniert.
Es funktioniert nur für einzelne Attribute, da der Aufruf überprüft wird, um sicherzustellen, dass das Attribut echt ist.
public function addAttributeToSelect($attribute)
{
$this->addFieldToSelect($this->_attributeToField($attribute));
return $this;
}
Wenn Sie hineinschauen Mage_Sales_Model_Resource_Collection_Abstract::_attributeToField
, sehen Sie, dass es wie folgt funktioniert.
- Wenn Sie eine Zeichenfolge übergeben, wird die Zeichenfolge einfach zurückgegeben.
- Wenn Sie ein Objekt übergeben, wird überprüft, ob es sich um ein Objekt vom Typ handelt,
Mage_Eav_Model_Entity_Attribute
und der Attributcode zurückgegeben.
Der Code sieht wie folgt aus:
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;
}
So wie ich es sehe, haben Sie folgende Möglichkeiten:
- Rufen Sie einfach
addFieldToSelect
mit einer Reihe von Attributcodes auf. Da Sie nur Codes und keine Objekte übergeben, erhalten Sie keine Validierung, aber möglicherweise benötigen Sie diese in Ihrem Fall nicht.
- Rufen Sie
addAttributeToSelect
einmal für jedes Attribut auf.
Ich würde in Ihrem Fall vorschlagen, dass Option eins die beste ist.