我的模型中有以下功能:
function getLocations($limit = null, $offset = null){
$this->db->select('*');
$this->db->from('location');
$this->db->join('process', 'process.process_id=location.process_id');
$this->db->join('line', 'line.line_id=process.line_id');
$this->db->limit($limit, $offset);
$this->db->order_by('location_id', 'asc');
return $this->db->get()->result();
}
然后使用:$this->the_model->getLocations()
执行,从而产生以下查询:
SELECT *
FROM "location"
JOIN "process" ON "process"."process_id"="location"."process_id"
JOIN "line" ON "line"."line_id"="process"."line_id"
ORDER BY "location_id" asc LIMIT 0
注意LIMIT 0
,执行$this->db->order_by('item_id', 'asc')->get('item', $limit, $offset)->result()
时不会发生这种情况。没有LIMIT 0
偶数限制,偏移量为null
。那么,如何解决这个问题呢?当limit为null时,我已经添加if
条件。
答案 0 :(得分:1)
0
是一个值。这并不意味着0
是NULL
。虽然NULL
根本没有价值。
对于您的情况,
function getLocations($limit = 1, $offset = 0){
^ ^
$this->db->select('*');
$this->db->from('location');
$this->db->join('process', 'process.process_id=location.process_id');
$this->db->join('line', 'line.line_id=process.line_id');
$this->db->limit($limit, $offset);
$this->db->order_by('location_id', 'asc');
return $this->db->get()->result();
}
将limit
至少1
和偏移量设为0
作为默认值。
答案 1 :(得分:1)
试试这个
function getLocations($limit , $offset){
$query = $this->db->query(
"SELECT *
FROM location
JOIN process ON process.process_id=location.process_id
JOIN line ON line.line_id=process.line_id
ORDER BY location_id asc LIMIT $limit, $offset");
$result = $query->result_array();
return $result;
}
不要设置$limit = NULL
。这将解决问题
答案 2 :(得分:0)
感谢那些回答我问题的人。
我通过将代码调整为:
来解决这个问题function getLocations($limit = null, $offset = null){
$this->db->select('*');
$this->db->join('process', 'process.process_id=location.process_id');
$this->db->join('line', 'line.line_id=process.line_id');
$this->db->order_by('location_id', 'asc');
return $this->db->get('location', $limit, $offset)->result();
}
这样生成的查询中就没有LIMIT 0
,即使$limit
是null
。
非常感谢。