2010-10-25 132 views

回答

2

是的,这是可能的。

我一直这样做,如果数据不是来自后我可以发送到模型。

$this->load->model('some_model'); 
$this->some_model->some_function($var); 

你想发送什么样的数据给模型?这将有助于决定这是否是不好的做法。

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()); 
} 
+0

这是值得商榷的模型是否应该也有输入验证或没有,所以不要”不要把它当作事实。一个坚实的分层架构在各个层面都有验证。由于不能直接在CI之外调用Model方法,因此尽管对查询的输入检查仍然适用,但仍可以在Model中不重复验证。 – Ferdy 2010-11-02 10:18:20

相关问题