Magento - SQLSTATE[42S22]: Colonne qui n'a pas trouvé: 1054 Unknown column 'billing_name' in 'where clause'

J'ai changer app/code/local/Mage/Adminhtml/Block/Sales/Order/Grid.php pour personnaliser ce qui est sur la Commandes grille.

Dans _getCollectionClass() j'ai ceci:

protected function _getCollectionClass()
{
    //return 'sales/order_grid_collection';
    return 'sales/order_collection';
}

et dans _prepareCollection() j'ai ceci:

protected function _prepareCollection()
{
    $collection = Mage::getResourceModel($this->_getCollectionClass());

    $collection->getSelect()->joinLeft(array('s1' => 'sales_flat_order_address'),'main_table.shipping_address_id = s1.entity_id',array('region','firstname','lastname'));
    $collection->getSelect()->joinLeft(array('s2'=>'sales_flat_order_address'),'main_table.billing_address_id = s2.entity_id',array('firstname','lastname'));

    $collection->getSelect()->columns(new Zend_Db_Expr("CONCAT(s2.firstname, ' ',s2.lastname) AS billing_name"));
    $collection->getSelect()->columns(new Zend_Db_Expr("CONCAT(s1.firstname, ' ',s1.lastname) AS shipping_name"));

$collection->getSelect()->joinLeft(array('sfo'=>'sales_flat_order'),'sfo.entity_id=main_table.entity_id',array('sfo.customer_email','sfo.weight','sfo.discount_description','sfo.increment_id','sfo.store_id','sfo.created_at','sfo.status','sfo.base_grand_total','sfo.grand_total')); //New 
    $collection->getSelect()->joinLeft(array('sfoa'=>'sales_flat_order_address'),'main_table.entity_id = sfoa.parent_id AND sfoa.address_type="shipping"',array('sfoa.street','sfoa.city','sfoa.region','sfoa.postcode','sfoa.telephone')); //New


    $this->setCollection($collection);

    return parent::_prepareCollection();
}

Maintenant, j'ai changé le _prepareColumns() pour ajouter mon champs nécessaires et tout fonctionne très bien! Sauf pour une chose...

Quand je fais une recherche pour les commandes par de Facturation ou Expédition, j'obtiens une erreur. J'ai ajouté filter_index's ('filter_index' => 'theindex') pour tous les composants nécessaires et ils fonctionnent très bien à l'EXCEPTION de ces deux champs de Facturation ou Expédition.

Alors j'ai mis filter_index's sur ceux qui sont trop.

Tout vient des grands. Je peux rechercher les autres domaines, mais dès que j'ai chercher sur le de Facturation ou Expédition champs, j'obtiens cette erreur:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'billing_name' in 'where clause'

J'ai essayé toutes sortes de choses, mais rien ne semble fonctionner. Quelqu'un peut s'il vous plaît aider!???


InformationsquelleAutor Geoff | 2012-01-27