I am new to magento. I just want to frame a query, but i am struggling to do.
My mysql query:
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
I have tried in 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;
}
}
I am getting only error.
Fatal error: Call to undefined method Blazedream_TopVendors_Model_Mysql4_TopVendors_Collection::group() in magento
Can anyone help me to form this?? Thanks in advance.
Please try following and see if it helps you.
$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");
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.