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!???
Vous devez vous connecter pour publier un commentaire.
Quand j'ai pris du recul pendant une minute et juste commencé à regarder la db, il m'est apparu que les champs que je veux sont déjà formaté. Je n'ai pas besoin de concaténer/fusion de quoi que ce soit. J'ai simplement besoin d'appeler le champs comme les autres étaient déjà appelé...
Mon nouveau
_prepareCollection()
fonction est:Avis de la
sfog
tableau.Cela va dans le
sales_flat_order_grid
table de la base de données et s'empare de la préformaté noms tels qu'ils ont été dans la grille d'origine. Je me demande si cela a quelque chose à voir avec le fait que la grille d'origine a été appelé à partir de ce tableau (sarcasme) - 😛Donc, assurez-vous de ne la
filter_index
dans les deux champs nom (comme toutes les autres)Exemple:
Et c'est tout ce qu'elle a écrit!