如果我想进行分页,我必须两次获取数据,一个用于获取总行数,一个用于获取具有限制的行,例如
<?php
class Admins extends CI_Model
{
public function dataTotal()
{
$total = $this->db->get('admins')->num_rows();
return $total;
}
public function data()
{
return $this->db->limit(10, $this->start)->get('admins')->result();
}
}
然后将总数分配给分页并分配数据进行查看,这很有意义,但如果有很多条件,我需要做两次,例如:
<?php
class Admins extends CI_Model
{
public function dataTotal()
{
$db = $this->db->from('admins')
->where('id >', 1)
->like('name', 'abc', 'both');
return $db->get()->num_rows();
}
public function data()
{
$data = $this->db->from('admins')
->where('id >', 1)
->like('name', 'abc', 'both')
->limit(10, $this->start);
return $data->get()->result();
}
}
更多条件意味着更多重复的代码,任何使条件过滤器成为一个的方法?
答案 0 :(得分:0)
您可以创建一个函数并使用SQL查询作为参数,这是最推荐的选项。如果这不是一个选项,你可以做这样的事情:
public function data($option = "default")
{
if($option == 'default')
{
$data = $this->db->from('admins')
->where('id >', 1)
->like('name', 'abc', 'both')
}
else if($option == 'other')
{
$data = $this->db->from('admins')
->where('id >', 1)
->like('name', 'abc', 'both')
->limit(10, $this->start);
}
return $data->get()->result();
}
然后称之为:
data();
data("other");
这是我能提出的最有效的方式。