首页 文章

CakePHP用MAX和group by查找

提问于
浏览
0

我有一个包含多个用户记录的表,例如他们的登录日期和IP地址 .

因此,我希望获取数据库中每个用户的最后一个IP地址或上次登录日期,持续时间为 n 天 .

当我尝试在cakephp find中使用 "group" 时,它没有显示正确的记录:

$data = $this->Login->find('all',
    array(
          'conditions'=>array('Login.last_login_date<='=>$d),
          'group'=>'Login.user_id',
          'order'=>array('Login.last_login_date'=>'DESC'),
          'fields' => array('MAX(Login.last_login_date) AS last_login_date', '*','User.*')
    )
);

可能是什么原因造成的?

1 回答

  • 0

    通过登录日期desc订购,您走在正确的轨道上 . 实际上你不需要在这里找到登录日期的 MAX . 如果您想获得上次登录日期,请按登录日期降序排序 . 分组后的登录日期值是最后一个登录日期 .

    $data = $this->Login->find('all', array(
        // Assuming that the login date column is login_date here
        'conditions' => array('Login.login_date <=' => $d), 
        'group' => 'Login.user_id',
        'order' => array('Login.login_date' => 'DESC'), 
        'fields' => array('*', 'User.*')
    ));
    

相关问题