我在Codeigniter中开发了一个网站,在我的模型中,我有一个这样的函数:
public function nationList($limit = null, $start = null)
{
if ($this->session->userdata('language') == "it") {
$this->db->select('nation.id, nation.name_it as name');
}
if ($this->session->userdata('language') == "en") {
$this->db->select('nation.id, nation.name_en as name');
}
$this->db->from('nation');
$this->db->order_by("name", "asc");
$this->db->limit($limit, $start);
$query = $this->db->get();
$nation = array();
foreach ($query->result() as $row) {
array_push($nation, $row);
}
return $nation;
}
字符串
如果在我的控制器中,我调用函数而没有限制,start不会返回这样的结果:
$data["nationlist"] = $this->Nation_model->nationList();
型
相反,如果我设置limit和start工作!如果limit和start为null,为什么不返回结果?如果limit和start为null,我不想创建第二个函数或控件。当limit和start为null时,我如何解决这个问题?没有控件或第二个函数,使代码更有用,更有效?
3条答案
按热度按时间vwhgwdsa1#
试试这个...
字符串
hjzp0vay2#
更多访客:
字符串
7rtdyuoh3#
我不知道你在2013年使用的是什么版本的CI,但我使用的是CI 3,我刚刚测试了两个
null
参数传递给limit()
,在呈现的查询中没有LIMIT
或OFFSET
(我使用get_compiled_select()
检查)。这意味着--假设你已经正确地发布了你的编码尝试--你不需要改变任何东西(或者至少旧的问题不再是CI问题)。
如果这是我的项目,这就是我将如何编写方法以返回对象的索引数组或空数组(如果结果集中没有符合条件的行)。
字符串
这些改进删除了不必要的语法、条件和冗余循环。
以下是CI核心代码,供参考:
型
因此
$this->qb_limit
和$this->qb_offset
类对象不会更新,因为null
在馈送到is_null()
或empty()
时计算为true
。