我有一个包含3列(thread_id
,message_id
,message
)的MySQL表。在link的“使用GROUP BY的示例”下找到的解决方案的行,我希望我的查询到GROUP BY thread_id
,但返回最高message_id
的行(每个thread_id
代替默认最低值。然后,我想要一个带有行/项的格式良好的数组,就像你在CakePHP中沿着$array[index]['Model']['field']
行获得不那么复杂的查找操作一样。使用以下CakePHP语法:
$this->Model->find('all', array(
'fields' => array('MAX(Model.message_id) as message_id', 'Model.thread_id', 'Model.message'),
'group => 'Model.thread_id'
));
现在,不幸的是我没有得到格式良好的数组。相反,我得到一个类似于:
的数组数组([0] =>数组([0] =>数组([message_id] =>想要/ correct_message_id)[型号] =>数组([消息] =>来自最低/不需要的消息message_id line。[thread_id] =>来自最低/不需要的message_id行的密钥))
为什么message_id
没有被连接到数组的[Model]
部分,为什么CakePHP获取最低message_id
行并放置message
和{{1没有thread_id
列的数组的[Model]
部分?
我想要数组的message_id
部分中的所有thre列,并且我希望根据我的初始描述,该行是[Model]
的最高message_id
。希望这个问题有道理。
答案 0 :(得分:1)
虚拟字段对于此类事情非常有用。
class MyModel extends AppModel {
public $virtualFields = array(
'max_message_id' => 'MAX(MyModel.message_id)'
);
}
您现在可以使用max_message_id,就好像它是表格中的普通字段一样,因此您可以将其添加到查找操作中。