2017-10-17 58 views
0

我有多個記錄對於用戶來說,一臺如他們的登錄日期和IP地址。CakePHP中找到MAX和group by

所以,我想最後一個IP地址或最後一次登錄的日期在我的數據庫的每個用戶,爲去年n天。

當我嘗試使用"group"在CakePHP中發現,它並沒有顯示正確的記錄:

$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.*') 
    ) 
); 

什麼可能的原因呢?

+0

記得當你分組時,你不能確定mysql顯示哪些列沒有被聚合。 https://dev.mysql.com/doc/refman/5.6/en/group-by-handling.html – arilia

回答

0

你是在正確的軌道上,通過登錄日期遞減排序。儘管如此,您實際上不需要在這裏找到登錄日期的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.*') 
)); 
+0

我用..沒有顯示正確的記錄 –