Codeigniter MVC,模型分离



这是我在代码点火器 MVC 中的问题。

假设我有 3 个模型:(用户、电子邮件、付款)。当某个人以某种方式支付时,控制器调用某种支付模型的方法,该方法也可以从其他控制器调用。

该方法,做一些数据库的插入和更新,最后,它想给用户发邮件,它已经有userid,但是它需要用户名,电子邮件,应该从用户表中获取然后发送电子邮件。

我不喜欢付款模型可以访问用户表,我想从用户模型中获取信息并使用电子邮件模型发送电子邮件。

通常我从控制器调用那些,我的意思是首先调用支付模型并从用户模型中获取结果并获取用户信息,然后使用电子邮件模型,所有这些都在控制器中。

但是因为我需要在某些控制器中运行该模型的方法,所以我必须重复这些行,这不是我的观点的正确方面。

问题:我应该在模型内调用其他模型还是在模型内使用其他模型表(在此选项中,如果我想重用该模型,如果其他表更改不正确,我应该更改它),还是有其他方法?

主要问题不完全是那个,它只是情况的例子。我还定义了一些函数来做这些事情并从控制器调用,但它也不对。

把它们全部放进一个库中。

因此,您的控制器调用库进行"付款",并传递一些详细信息。然后,您的库执行您上面描述的所有功能 - 即调用支付模型,发送电子邮件等。

您可以在此处了解有关代码点火器库的更多信息

这是一个很好的解决方案。在应用程序/内核中定义My_model.php。

Class My_model extends CI_Model{
    function __construct()
    {
        parent::__construct();
    }
    function get($where , $table){
        $query = $this->db->get_where($table, $where);
        return $query->result();
    }
}

现在,模型应该扩展My_model而不是CI_Model。现在你可以这样称呼它。假设您在控制器中加载了电子邮件模型,并且想要访问用户模型。

 $where = array('user_id', $id); 
 $table = 'user';
 $this->email->get($table, $where);

欲了解更多信息,请阅读本书
http://codeigniter.com/forums/viewthread/211821/

最新更新