Verwendung von group by in magento collection mit join query

13

Im Admin-Grid des Moduls verwende ich diesen Code, um die Sammlung zu erhalten und sie nach Kunden-ID zu gruppieren

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

Aber hier muss ich Renderer- und Filterfunktionen für Kundeninformationen wie Name und E-Mail gegen jeden verwenden entity_id. Ich möchte das Kundenmodell mit der Tabelle meines Moduls verbinden. Dafür habe ich diesen Code geschrieben

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

aber es gibt mir diesen fehler

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

Jede Hilfe wird sehr geschätzt.

Haris
quelle
1
es sollte sein -> group ('e.entity_id');
Amit Bera
Sie sollten dies als Antwort mit einigen Details hinzufügen, warum Sie diee.
Jonathan Hussey
Entschuldigung für diesen dummen Fehler. @AmitBera, danke für deine Hilfe und füge diese als Antwort hinzu, damit die Frage geschlossen werden kann.
Haris

Antworten:

26

Sie müssen Tabellennamen in hinzufügen group by condition.Wie Sie haben not added on conditions table namebei Tisch - Gruppe ( ‚ENTITY_ID‘) soquery did not find columns name

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

Logik ist:

$collection->getSelect()->group('TABLE_NAME.FIELD_NAME')
Amit Bera
quelle
1
Wenn Sie zusätzlich nach mehreren Feldern gruppieren müssen, fügen Sie einfach more -> group () -Klauseln -> group ('field1') -> group ('field2') hinzu.
GregC
Ich möchte mit group by einzigartige Produkte bestellen. Ich habe 2 Bestellungen mit 2 gleichen Bestellpositionen. Derzeit werden 4 Zeilen im Raster angezeigt. Aber ich brauche 2-reihig mit group by.
Dhaduk Mitesh
Teilen Sie Ihren 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
Ich möchte nach parent_item_idReihenfolge gruppieren .
Dhaduk Mitesh