2017-10-17 2 views
0

ログイン日やIPアドレスなど、複数のレコードを持つテーブルがあります。CakePHPとMAXでグループを検索

したがって、最後のIPアドレスまたは最後のログイン日は、データベース内のすべてのユーザーの最後のn日間です。

私が見つけCakePHPでは"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.*') 
    ) 
); 

本の原因である可能性がありますか?

+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

私は正しいレコードを表示していません –

関連する問題