0

这是我在 codeigniter MVC 中的问题。

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

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

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

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

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

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

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

4

2 回答 2

1

全部放入图书馆。

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

您可以在此处了解有关 codeigniter 库的更多信息

于 2012-06-20T11:32:06.403 回答
1

这是一个很好的解决方案。在 application/core 中定义 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/

于 2012-06-20T11:49:15.943 回答