Php codeigniter中活动记录的上限
我的模型中有这个函数,它的目的是从实际日期开始获取过去30天的统计数据,在我到达第30天之前它工作正常,然后我发现它从最早的日期开始计数,所以我将顺序从“ase”翻转到“desc”但它似乎仍然在最早的一天之前返回并计数,没有给我我想要的数据,所以我想知道是否有任何方法使用codeigniter并为“限制”提供一个起点,即实际日期Php codeigniter中活动记录的上限,php,codeigniter,activerecord,Php,Codeigniter,Activerecord,我的模型中有这个函数,它的目的是从实际日期开始获取过去30天的统计数据,在我到达第30天之前它工作正常,然后我发现它从最早的日期开始计数,所以我将顺序从“ase”翻转到“desc”但它似乎仍然在最早的一天之前返回并计数,没有给我我想要的数据,所以我想知道是否有任何方法使用codeigniter并为“限制”提供一个起点,即实际日期 function graph_data($id_person) { $this->db->limit(30); // get data for
function graph_data($id_person)
{
$this->db->limit(30); // get data for the last 30 days including the curent day
$this->db->where('personid',$id_person);
$this->db->order_by('date', 'ase');
$query = $this->db->get('stats');
foreach($query-> result_array() as $row)
{
$data[] = $row;
}
return $data;
}
在您的案例中,限制返回最后30行。它与日期无关,除非您每天只添加一行 尝试使用mysql
Source--我最终找到了解决方案,给出了一个范围或天数,比实际日期提前29天,没有使用BETWEEN,效果很好
<?php
function graph_data($id_person)
{
$today = date('Y-m-d');
$lastdate = date('Y-m-d', strtotime('-29 days', strtotime($today)));// 30 days ago
$this->db->where('personid',$id_person);
$this->db->where("date <= '$today'");
$this->db->where("date >= '$lastdate'");
$this->db->order_by('date', 'ase');
$query = $this->db->get('stats');
$data = array();
foreach($query-> result_array() as $row)
{
$data[] = $row;
}
return $data;
}
请参阅本页:您是否打算使用ASC
?它不是ase
。。。什么数据类型是日期?不,我的意思是ase,日期的类型就是表格中的日期。是否需要输入日期格式?
<?php
function graph_data($id_person)
{
$today = date('Y-m-d');
$lastdate = date('Y-m-d', strtotime('-29 days', strtotime($today)));// 30 days ago
$this->db->where('personid',$id_person);
$this->db->where("date <= '$today'");
$this->db->where("date >= '$lastdate'");
$this->db->order_by('date', 'ase');
$query = $this->db->get('stats');
$data = array();
foreach($query-> result_array() as $row)
{
$data[] = $row;
}
return $data;
}