我可以将参数传递给模型函数吗?

时间:2010-10-25 00:35:36

标签: php codeigniter method-parameters

甚至可以在codeigniter中做这样的事情吗?它一般被认为是一种好习惯吗?

2 个答案:

答案 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());
}