Jen*_*nny 21 collections magento
我正在尝试使用MySQL的MAX函数从我的表中检索最新日期.
$_updates = Mage::getModel('ticket/updates')->getCollection();
$_updates->getSelect()->columns('MAX(created) as max_created')->group(array('status_id'));
Run Code Online (Sandbox Code Playgroud)
这是结果查询:
SELECT `main_table`.*, MAX(created) AS `max_created` FROM `em_ticket_updates` AS `main_table` GROUP BY `status_id`
Run Code Online (Sandbox Code Playgroud)
这样做的问题是,如果包含所有字段(main_table.*
),它将无法正常运行.
有没有办法main_table.*
从查询中删除并只使用特定字段?
谢谢.
clo*_*eek 47
这里可以使用Zend技巧.
$_updates->getSelect()
->reset(Zend_Db_Select::COLUMNS)
->columns('MAX(created) as max_created')
->group(array('status_id'));
Run Code Online (Sandbox Code Playgroud)
注意:
对于EAV集合,您必须重新添加,entity_id
否则在加载集合时会出现错误
$collection = Mage::getModel('catalog/product')
->getCollection();
$collection->getSelect()
->reset(Zend_Db_Select::COLUMNS)
->columns(array('entity_id'));
$collection
->addAttributeToSelect(array('image','small_image','thumbnail'))
->addFieldToFilter('entity_id', array('in' => $simple_ids));
Run Code Online (Sandbox Code Playgroud)
Magento提供addFieldToSelect()功能.使用下面的代码来获取特定字段.
$Collection = Mage::getModel('showdown/votes')->getCollection();
$Collection->addFieldToSelect('id');
Run Code Online (Sandbox Code Playgroud)
我知道这是一个老帖子,但我想我会发布一个替代解决方案.
我自己也有类似的问题,我最终搜索了源代码,直到我达到了Zend_Db_Select
咨询Zend文档后(例8).
$select = $db->select()
->from(array('p' => 'products'),
array('product_id', 'product_name'));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
54752 次 |
最近记录: |