2015-08-28 7 views
0

Я новичок в magento. Я просто хочу создать запрос, но я изо всех сил пытаюсь это сделать.Magento join query query using 3 table

Мой MySQL запросов:

SELECT `main_table`.*, `t1`.*, count(t2.review_id) AS `totalrecord`, SUM(t2.rating) AS `totalrating`, `t2`.* FROM `nbmp_vendor` AS `main_table` 
LEFT JOIN `customer_entity` AS `t1` ON main_table.customer_id = t1.entity_id 
LEFT JOIN `nbmp_review` AS `t2` ON main_table.customer_id = t2.vendor_id 
WHERE ((vendor_status = '1')) AND (t1.group_id = '4') group by main_table.vendor_id 

Я попытался в Magento:

<?php 
    class Blazedream_TopVendors_Block_Monblock extends Mage_Core_Block_Template { 

public function methodblock() { 

    $myTable = "customer_entity"; 
    $myTable1 = "nbmp_review"; 
    $collection = Mage::getModel('topvendors/topvendors')->getCollection() 
          ->addFieldToFilter(array('vendor_status'), array('1')) 
          ->setOrder('vendor_id','asc'); 

    $collection->getSelect() 
      ->joinLeft(array("t1" => $myTable), "main_table.customer_id = t1.entity_id") 
      ->where("t1.group_id = '4'"); 

    $collection->getSelect() 
      ->columns('count(t2.review_id) AS totalrecord') 
      ->columns('SUM(t2.rating) AS totalrating') 
      ->joinLeft(array("t2" => $myTable1), "main_table.customer_id = t2.vendor_id") 
      ->group("main_table.vendor_id"); 
    echo $collection->getselect(); die; 
     $ddata = $collection->getData(); 
     $i = 0; 
     foreach($ddata as $data) 
     { 

     $retour[$i]['id'] = $data->getData('vendor_id'); 
     $retour[$i]['name'] = $data->getData('vendor_name'); 
     $retour[$i]['vendor_slug'] = $data->getData('vendor_slug'); 
     // $retour[$i]['rating_avg'] = $vendors[$data->getData('vendor_id')]['rating_avg']; 
     $retour[$i]['totalrating'] = $data->getData('totalrating'); 
     $retour[$i]['rating_avg'] = $data->getData('totalrating')/$data->getData('totalrecord'); 
     $i++; 

    } 
    // Mage::getSingleton('adminhtml/session')->addSuccess('Cool Ca marche !!'); 
    return $retour; 
} 
} 

Я получаю только сообщение об ошибке.

Fatal error: Call to undefined method Blazedream_TopVendors_Model_Mysql4_TopVendors_Collection::group() in magento 

Может ли кто-нибудь помочь мне сформировать это? Спасибо заранее.

+1

Можете ли вы обновить свой вопрос с сообщением об ошибке? – Muk

+0

ОК. всего мин. – tttt

+0

Я обновил .. pls ссылаются на запрос с ошибкой. – tttt

ответ

1

Пожалуйста, попробуйте следовать и посмотреть, поможет ли это вам.

$myTable  = "customer_entity"; 
$myTable1 = "nbmp_review"; 
$collection = Mage::getModel('topvendors/topvendors')->getCollection() 
         ->addFieldToFilter(array('vendor_status'), array('1')) 
         ->setOrder('vendor_id','asc');       

$collection->getSelect()->group('vendor_id'); // TRY THIS LINE OF CODE 

$collection->getSelect() 
     ->joinLeft(array("t1" => $myTable), "main_table.customer_id = t1.entity_id") 
     ->where("t1.group_id = '4'"); 

$collection->getSelect() 
     ->columns('count(t2.review_id) AS totalrecord') 
     ->columns('SUM(t2.rating) AS totalrating') 
     ->joinLeft(array("t2" => $myTable1), "main_table.customer_id = t2.vendor_id"); 
+0

$ collection-> getSelect() -> group ('main_table.vendor_id'); // Это правильно. Но все же я не могу извлечь и распечатать на странице просмотра. – tttt

+0

@tttt Где вы используете этот запрос? – Muk

+0

Только в блоке, подождите, я отредактирую код. – tttt