Jak korzystać z grupowania w kolekcji magento z zapytaniem o dołączenie

13

W siatce administracyjnej modułu używam tego kodu, aby uzyskać kolekcję i pogrupować je według identyfikatora klienta

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

ale tutaj muszę użyć funkcji renderowania i filtrowania informacji o kliencie, takich jak nazwa i adres e-mail dla każdego z nich entity_id. chcę dołączyć model klienta do tabeli mojego modułu. do tego napisałem ten kod

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

ale daje mi ten błąd

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

Jakakolwiek pomoc będzie doceniona.

Haris
źródło
1
powinno to być -> group ('e.entity_id');
Amit Bera
Powinieneś dodać to jako odpowiedź ze szczegółowymi informacjami na temat tego, dlaczego potrzebujesze.
Jonathan Hussey
Przepraszam za ten głupi błąd. @AmitBera dziękuję za pomoc i proszę dodać to jako odpowiedź, aby pytanie mogło zostać zamknięte.
Haris

Odpowiedzi:

26

Musisz dodać nazwę tabeli w group by condition. Podobnie jak not added on conditions table namew grupie tabel („identyfikator_ podmiotu”), więcquery did not find columns name

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

Logika to:

$collection->getSelect()->group('TABLE_NAME.FIELD_NAME')
Amit Bera
źródło
1
Dodatkowo, jeśli chcesz pogrupować według wielu pól, po prostu dodaj więcej -> klauzule group () -> group ('field1') -> group ('field2');
GregC
Chcę zamówić unikalne produkty za pomocą grupowania według. Mam 2 zamówienia z 2 tym samym przedmiotem zamówienia. Obecnie jest wyświetlana 4 wiersze w siatce. Ale potrzebuję 2-wierszowego przy użyciu grupy według.
Dhaduk Mitesh
Udostępnij swój kod
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
Chcę grupować według parent_item_idkolejności.
Dhaduk Mitesh