Codeigniter。将group_by与where_in一起使用时,如何获取最新条目

时间:2019-01-25 20:47:57

标签: php mysql codeigniter

尝试用codeigniter进行数据库调用时遇到麻烦。 我有一个下面的数据库表。

id | userId |          timestamp       | total
99 |   30   |    2019-01-25 17:07:30   |   301
98 |   31   |    2019-01-24 14:02:30   |   302
97 |   32   |    2019-01-24 15:03:30   |   303
96 |   30   |    2019-01-24 11:05:30   |   304
95 |   31   |    2019-01-23 18:07:30   |   305
94 |   32   |    2019-01-23 13:01:30   |   306
93 |   33   |    2019-01-22 11:03:30   |   307
92 |   33   |    2019-01-20 11:03:30   |   300

现在,我需要获取每个用户的最新条目,因此我有一组用户ID,例如
    $userIds = array('30, 31, 32, 33');

所以我有

$latestData = $this->db->where_in('userId', $userIds)
                       ->order_by('timestamp', 'desc')
                       ->group_by('userId')
                       ->get('usertable');

因此,基本上我的结果应如下所示

 array(4) {
  [0]=>
  object(stdClass) {
    ["id"]=>
    string(4) "99"
    ["userId"]=>
    string(9) "30"
    ["timestamp"]=>
    string(19) "2019-01-25 17:07:30"
    ["total"]=>
    string(4) "301"
  }
  [1]=>
  object(stdClass) {
    ["id"]=>
    string(4) "98"
    ["userId"]=>
    string(9) "31"
    ["timestamp"]=>
    string(19) "2019-01-24 14:02:30"
    ["total"]=>
    string(4) "302"
  }
  [2]=>
  object(stdClass) {
    ["id"]=>
    string(4) "97"
    ["userId"]=>
    string(9) "32"
    ["timestamp"]=>
    string(19) "2019-01-24 15:03:30"
    ["total"]=>
    string(4) "303"
  }
  [3]=>
  object(stdClass) {
    ["id"]=>
    string(4) "93"
    ["userId"]=>
    string(9) "33"
    ["timestamp"]=>
    string(19) "2019-01-22 11:03:30"
    ["total"]=>
    string(4) "307"
  }
}

但是,可惜我没有。我只能得到最早的约会。如何按每个用户的日期获取最新条目。我尝试了尽可能多的变体,但无法解决。

任何帮助将不胜感激。

更新:尝试了草莓的重复链接,但没有用。

0 个答案:

没有答案