Как использовать group by в коллекции magento с запросом на соединение

13

В сетке администратора модуля я использую этот код, чтобы получить коллекцию и сгруппировать их по идентификатору клиента

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

но здесь я должен использовать функции рендеринга и фильтрации для информации о клиенте, такие как имя и адрес электронной почты для каждого entity_id. Я хочу присоединить модель клиента к таблице моего модуля. для этого я написал этот код

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

но это дает мне эту ошибку

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

любая помощь будет высоко оценена.

Харис
источник
1
это должно быть -> группа ('e.entity_id');
Амит Бера
Вы должны добавить это как ответ с некоторыми подробностями о том, почему вам нуженe.
Джонатан Хасси
Извините за эту глупую ошибку. @AmitBera спасибо за вашу помощь и, пожалуйста, добавьте это как ответ, чтобы вопрос мог быть закрыт.
Харис

Ответы:

26

Вам нужно добавить имя таблицы в group by condition. Как вы сделали not added on conditions table nameв группе таблиц ('entity_id'), такquery did not find columns name

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

Логика это:

$collection->getSelect()->group('TABLE_NAME.FIELD_NAME')
Амит Бера
источник
1
Кроме того, если вам нужно сгруппировать по нескольким полям, просто добавьте еще -> group () предложения -> group ('field1') -> group ('field2');
ГрегК
Я хочу заказать уникальные продукты с помощью группы. У меня 2 заказа с 2 одинаковыми элементами заказа. В настоящее время в сетке отображается 4 строки. Но мне нужно 2-рядное использование group by.
Дхадук Митеш
Поделитесь своим кодом
Амит Бера
$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', ] );
Дхадук Митеш
Я хочу группировать по parent_item_idпорядку.
Дхадук Митеш