Pregunta

¿Por qué no puedo hacer lo siguiente?

            $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')
                            )
                    );

La subconsulta falla con el error, "no puede determinar el nombre del campo"

¿Fue útil?

Solución

Su pregunta no tiene suficiente contexto para proporcionar una respuesta concreta, por lo que voy a explicar por qué Magento está lanzando una excepción con el mensaje.

No se puede determinar el nombre del campo

Esperemos que eso le brinde suficiente información para rastrear el problema.

En un sistema de Magento de stock, el solamente colocar el error "no se puede determinar el nombre del campo" Aparece es

#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;
}

Entonces, si el _attributeToField se pasa el método un valor de atributo que es

  1. Una cadena vacía

  2. Un objeto de atributo donde getAttributeCode Devuelve falso (o uno de los muchos valores Php considera falso-ish)

  3. Algo que no es un Mage_Eav_Model_Entity_Attribute o cadena

entonces se lanza la excepción "no se puede determinar el nombre del campo".

En un sistema estándar, magento llama a este método cuando llama a un objeto de recolección addAttributeToSelect, addAttributeToFilter, addAttributeToSort, o addAttributeToSearchFilter métodos.

Entonces, algo sobre su código hace que se pase un valor no válido a _attributeToField. Esto significa que el problema no es su subcuadery, o el subcreidor puede alterar algo que hace que se pase un valor no válido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top