甚至可以在codeigniter中做这样的事情吗?它一般被认为是一种好习惯吗?
答案 0 :(得分:2)
是的,这是可能的。
我一直这样做,如果数据不是来自帖子,我可以将它发送给模型。
$this->load->model('some_model');
$this->some_model->some_function($var);
您想将哪些数据发送到模型?这将有助于确定这是不好的做法。
答案 1 :(得分:1)
当然有可能!就像Kieran所展示的那样,你可以在模型类中编写接受参数的函数。
请记住,您的控制器应首先解析/验证这些参数,模型中不应包含额外的验证。您的模型应严格用于写入和读取数据库。
因此,作为一种良好做法,您应该只传递包含要在查询中存储或使用的实际数据的参数。
我经常为不同的WHERE案例编写不同的函数。例如:
select($id){}
select_by_name($name){}
...
这可以让您的模型易于理解。我做的唯一例外是限制你的结果。在我的所有模型中,我都可以选择所有记录,并可选择为分页目的传递另外两个变量:
select_all($start=null,$limit=null){
$qry = "SELECT * FROM ...";
if($start != null) $qry .= " LIMIT ?,?";
return $this->db->query($qry,func_get_args());
}