Php Codeigniter活动记录仅选择第一条记录,而不是最近的记录

Php Codeigniter活动记录仅选择第一条记录,而不是最近的记录,php,mysql,codeigniter,activerecord,Php,Mysql,Codeigniter,Activerecord,我的问题很简单。我使用的是codeigniter活动记录,模型类所要做的就是从属于用户的表中选择最近的项 function get_progress($users_id) { $query = $this->db->get('progress'); $this->db->where('user_key', $users_id); $this->db->order_by("id", "desc"); $this->db->limit

我的问题很简单。我使用的是codeigniter活动记录,模型类所要做的就是从属于用户的表中选择最近的项

function get_progress($users_id)
 {
  $query = $this->db->get('progress');
  $this->db->where('user_key', $users_id);
  $this->db->order_by("id", "desc");
  $this->db->limit(1);
  return $query->row_array();
 }
看起来很简单,但出于某种原因,它获取与用户密钥匹配的最低id

我已尝试将where语句更改为

  $this->db->where('id', '2');
这是可行的,但当然,这只是为了排除故障。我需要变量


我重写了几种方法,包括使用get_where()和将desc更改为asc。不管怎样,它都是在抓取低id。我如何才能选择用户密钥为匹配号码的最高id。

您可以尝试下面的代码。

function get_progress($users_id){
  return $this->db->from('progress')
  ->where('user_key', $users_id)
  ->order_by("id", "DESC")
  ->get()
  ->row();
}

您将获得最近的一行作为STD Class对象

这在使用结果时返回未定义的索引,因此我认为这不是一个有效的查询。对于STD Class,您必须使用$row=$This->My_model->get_progress($users\u id);您确定active record允许使用该语法进行链接吗。我在文档中没有看到它;退出();在您的controllerray(size=0)empty中,我很确定您的查询已被破坏。我以前从未见过这种语法。我很确定$this->db和a;活动记录的每次操作都需要在末尾。
function get_progress($users_id)
{
        $this->db->select('*')
        ->from('progress')
        ->where('user_key',$users_id)
        ->order_by('id','desc')
        ->limit(1);
        $q=$this->db->get();
        return $q->result_array();
}