Cakephp 1.3 - 订购一组结果

时间:2012-05-23 12:14:38

标签: sql cakephp model

我有以下型号:

$values = $this->PtlUserdata->find('all', array(

    'fields' => array(

        'PtlUserdata.field', 
        'PtlUserdata.value',
        'PtlUserdata.timestamp'

     ), 

     'conditions' => array(

         'PtlUserdata.user_id' => $user->get('id'),

     ),

     'order' => array('PtlUserdata.timestamp' => 'DESC'),
     'group' => array('PtlUserdata.field')

));

我正在尝试按时间戳排序结果,然后按字段对结果进行分组,这样我就可以使用该字段名称获取最新记录。

有人知道如何做到这一点是cakephp吗?

提前感谢您的帮助,非常感谢:)

2 个答案:

答案 0 :(得分:0)

这是数据库的默认行为。你必须提出某种解决方法才能做到这一点。

一个想法:CakePHP: Group by ID and Order by date

答案 1 :(得分:0)

这是否有效:

$values = $this->PtlUserdata->find('all', array(

'fields' => array(

    'PtlUserdata.field', 
    'PtlUserdata.value',
    'max(PtlUserdata.timestamp)'

 ), 

 'conditions' => array(

     'PtlUserdata.user_id' => $user->get('id'),
     'PtlUserdata.timestamp' => 'max(PtlUserdata.timestamp)',
 ),

 'group' => array(
      'PtlUserdata.field',
      'PtlUserdata.timestamp'
      )

));

我没有机会测试这个,但你肯定需要按PtlUserdata.timestamp进行分组。