跨境电商
经验交流分享

Magento Collection获取单独一个模型的方法

一般在Magento的模版中最经常见到getCollection()的方法,用来循环产品、分类及其他数据。有时候我们需要在代码中筛选符合某条件的值,并且我们非常确定筛选值只包含一个或者我们只需要取Collection符合条件的第一个模型的时候。该如何获取到模型吗?是不是也需要和模板中一样,foreach一下呢?当然不用,我们可以通过getFirstItem()或者getLastItem()方法获取到Collection中的第一个或者最后一个模型。

例如,在Ruiwant_Reward积分插件中,当管理员把某订单状态修改为complete的时候,程序需要查看该订单是否与某个积分关联。因为客户下单之后,该积分处于冻结状态,一旦检测到该订单完成,则将该订单使用的优惠积分值从客户的总积分中去除。很明显,如果确实存在与该订单关联的积分,肯定就只有那么一条。当然这里会有朋友说,我们也可以通过给积分模型写一个loadByOrderId()的方法,来直接取出这个模型。这个方法也是完全可以的,但是我更倾向于使用Collection来过滤。

参考代码如下。

[php]
$pointCollection = Mage::getModel(‘rewards/point_info’)->getCollection()
->addFieldToFilter(‘event_id’, array(‘eq’ => 8))
->addFieldToFilter(‘order_id’, array(‘ea’ => Ruiwant_Rewards_Model_Point::PENDING));

$pointInfo = $pointCollection->getFirstItem();
if (!$pointInfo->getPointId()) {
return;
}
[/php]

更多方法请参考Magento文档或者直接去代码中查找。
http://docs.magentocommerce.com/Varien/Varien_Data/Varien_Data_Collection.html

赞(0)
未经允许不得转载:锐想 » Magento Collection获取单独一个模型的方法
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

锐想电商 - 跨境电商经验交流分享

锐想无限