Codeigniter的Active Record只选择第一条记录而不是最近的记录

4

我的问题非常简单。我正在使用CodeIgniter Active Record,所有模型类只需从属于用户的表中选择最新的项目。

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。

2个回答

1
你可以尝试以下代码。
function get_progress($users_id){
  return $this->db->from('progress')
  ->where('user_key', $users_id)
  ->order_by("id", "DESC")
  ->get()
  ->row();
}

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

使用结果时返回未定义索引,因此我认为这不是一个有效的查询。 - Goose
对于标准类,您必须像这样使用: $row = $this->My_model->get_progress($users_id); <?php echo $row->column_name; ?> - Touhid
你确定Active Record允许在那种语法中进行链接吗?我在文档中没有看到。 - Goose
在您的控制器中使用 var_dump($query_from_model); exit();。 - Touhid
数组(大小= 0) 为空我很确定你的查询有问题。我从未见过那种语法。我相信每个活动记录操作都需要$this->db和一个;。 - Goose
让我们在聊天中继续这个讨论。点击此处进入聊天室 - Touhid

1
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();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接