Вопрос
Почему я не могу сделать следующее:
$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')
)
);
Подпрограмма не удается с ошибкой, "не может определить имя поля"
Решение
Ваш вопрос не имеет достаточно контекста, чтобы дать конкретный ответ, поэтому я собираюсь объяснить, почему Magento бросает исключение с сообщением
Не может определить имя поля
Надеюсь, это даст вам достаточно информации, чтобы отследить проблему.
В системе Magento Stock Только Разместите ошибку «не может определить имя поля».
#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;
}
Итак, если _attributeToField
метод передается значением атрибута, которое
Пустая строка
Объект атрибута, где
getAttributeCode
Возвращает false (или одно из многих значений, которые PHP считает False-ish)То, что не
Mage_Eav_Model_Entity_Attribute
или строка
тогда исключение «не может определить имя поля».
В стандартной системе Magento вызывает этот метод при вызове объекта коллекции addAttributeToSelect
, addAttributeToFilter
, addAttributeToSort
, или же addAttributeToSearchFilter
методы
Итак, что -то в вашем коде приводит к передаче недействительного значения _attributeToField
. Анкет Это означает, что проблема не является вашим подкором, или подрегистрат может изменить что-то, что приводит к передаче неверного значения.