Comment utiliser group by dans la collection magento avec une requête de jointure


13

Dans la grille d'administration du module, j'utilise ce code pour obtenir la collecte et les regrouper par identifiant client

$collection = Mage::getModel('referafriend/statistics')->getCollection();
$collection->getSelect()->group('entity_id');
$this->setCollection($collection);

mais ici, je dois utiliser les fonctions de rendu et de filtrage pour les informations client comme le nom et l'e-mail contre chacun entity_id. je veux rejoindre le modèle client avec la table de mon module. pour cela j'ai écrit ce code

 $collection = Mage::getModel('customer/customer')->getCollection()
 ->addNameToSelect();
$collection->getSelect()->join(array('refer' => 'table_name'),'refer.entity_id = e.entity_id'
          ); 
   $collection->getSelect()->group('entity_id'); 
   $collection->addAttributeToSelect('*');

mais ça me donne cette erreur

SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'entity_id' in group statement is ambiguous

Toute aide sera grandement appréciée.


1
ce devrait être -> group ('e.entity_id');
Amit Bera

Vous devriez ajouter ceci comme une réponse avec quelques détails sur les raisons pour lesquelles vous avez besoin dee.
Jonathan Hussey

Désolé pour cette stupide erreur. @AmitBera merci pour votre aide et veuillez l'ajouter comme réponse pour que la question puisse être fermée.
Haris

Réponses:


26

Vous devez ajouter le nom de la table dans group by condition.Comme vous l'avez fait not added on conditions table nameau groupe de tables ('entity_id') afinquery did not find columns name

 getSelect()->group('e.entity_id');

La logique c'est:

$collection->getSelect()->group('TABLE_NAME.FIELD_NAME')

1
De plus, si vous avez besoin de grouper par plusieurs champs, il suffit d'ajouter plus -> clauses group () -> group ('field1') -> group ('field2');
GregC

Je veux commander des produits uniques en utilisant group by. J'ai 2 commandes avec 2 mêmes articles. Actuellement, il est affiché 4 lignes dans la grille. Mais j'ai besoin de 2 rangs en utilisant group by
Dhaduk Mitesh

Partagez votre code
Amit Bera

$collection = $object_manager->create('\Magento\Sales\Model\Order\Item')->getCollection(); $collection->getSelect()->join( ['order' => $this->getTable('sales_order')], 'order.entity_id = main_table.order_id and (if(main_table.parent_item_id IS NULL,main_table.price != 0.0000,main_table.parent_item_id IS NULL))', [ 'order_number' => 'order.increment_id', 'order_store_id' => 'order.store_id', ] );
Dhaduk Mitesh

Je veux regrouper par parent_item_idordre.
Dhaduk Mitesh
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.