Frage
Warum kann ich nicht Folgendes tun:
$this->getSelect()
->columns(
array(
'ordered_qty' => 'COUNT(DISTINCT main_table.entity_id)',
'invoiced_qty' => new Zend_Db_Expr('( select COUNT(OI.item_id) AS Ct from sales_flat_order_item AS OI WHERE OI.order_id=main_table.entity_id ) AS invoiced_qty')
)
);
Die Unterabfrage schlägt mit dem Fehler fehl, "kann den Feldnamen nicht bestimmen".
Lösung
Ihre Frage hat nicht genug Kontext, um eine konkrete Antwort zu geben. Ich werde also erklären, warum Magento eine Ausnahme mit der Nachricht ausführt
Den Feldnamen kann nicht bestimmen
Hoffentlich erhalten Sie genügend Informationen, um das Problem aufzuspüren.
In einem stock magento -System die nur Platzieren Sie den Fehler "Der Feldname kann nicht bestimmen" angezeigt.
#File: app/code/core/Mage/Sales/Model/Resource/Collection/Abstract.php
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;
}
Also, wenn die _attributeToField
Die Methode wird ein Attributwert übergeben, der ist
Eine leere Zeichenfolge
Ein Attributobjekt wo
getAttributeCode
Gibt false zurück (oder einer der vielen Werte, die PHP falsch betrachtet)Etwas, das nicht
Mage_Eav_Model_Entity_Attribute
oder Zeichenfolge
Dann wird die Ausnahme "den Feldnamen nicht bestimmen" geworfen.
In einem Standard -System nennt Magento diese Methode, wenn Sie ein Sammelobjekt aufrufen addAttributeToSelect
, addAttributeToFilter
, addAttributeToSort
, oder addAttributeToSearchFilter
Methoden.
Etwas an Ihrem Code führt also dazu, dass ein ungültiger Wert übergeben wird _attributeToField
. Dies bedeutet, dass das Problem nicht Ihr Unterbild ist, oder das Unterbild kann etwas verändern, das einen ungültigen Wert verabschiedet.