Magento使用3表连接查询查询

时间:2015-08-28 09:05:29

标签: php mysql magento

我是magento的新手。我只是想构建一个查询,但我很难做到。

我的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 个答案:

答案 0 :(得分:2)

请尝试关注,看看它是否对您有帮助。

$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");