我正在尝试使用MySQL的MAX函数从我的表中检索最新日期。
$_updates = Mage::getModel('ticket/updates')->getCollection();
$_updates->getSelect()->columns('MAX(created) as max_created')->group(array('status_id'));
这是结果查询:
SELECT `main_table`.*, MAX(created) AS `max_created` FROM `em_ticket_updates` AS `main_table` GROUP BY `status_id`
问题在于,如果包含所有字段(main_table.*
),它将无法正常运行。
有没有办法从查询中删除main_table.*
并仅使用特定字段?
感谢。
答案 0 :(得分:45)
这里可以使用Zend技巧。
$_updates->getSelect()
->reset(Zend_Db_Select::COLUMNS)
->columns('MAX(created) as max_created')
->group(array('status_id'));
注意:
对于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));
答案 1 :(得分:6)
Magento提供addFieldToSelect()功能。使用下面的代码来获取特定字段。
$Collection = Mage::getModel('showdown/votes')->getCollection();
$Collection->addFieldToSelect('id');
答案 2 :(得分:5)
我知道这是一个老帖子,但我想我会发布一个替代解决方案。
我自己也遇到了类似的问题,在查阅Zend Documentation(例8)后,我最终搜索了来源Zend_Db_Select
。
$select = $db->select()
->from(array('p' => 'products'),
array('product_id', 'product_name'));
答案 3 :(得分:0)
只需要使用“getColumnValues”
$_updates = Mage::getModel('ticket/updates')->getCollection();
$columnValues = $_updates->getColumnValues('Your Column Name');