首页 > 解决方案 > Codeigniter,如何重用模型中的功能

问题描述

我仍在学习 MVC 方法,我对正确使用有疑问。

如何转换下面的函数以便我可以重用它:

老情况(每次调用这个函数,都可以指定不同的表名):

foreach ($client_data->fetch_all("gender") as $aRow):

codeigniter 的新情况:

功能视图:

<?php foreach($fetch_all->result() as $o) : ?>

功能控制器:

    public function load_client_data() {
    $client_id = $_POST['id'];

    $client_data = $this->user_model->get_client_data($client_id);
    $fetch_all = $this->user_model->fetch_all();

    $this->template->loadAjax("clients/client_data.php", array(
        "client_data" => $client_data,
        "fetch_all" => $fetch_all)
    );

功能型号:

    public function fetch_all() {
    return $this->db->get();
}

新情况下的代码可以正常工作,但是如何传递表名,以便可以像在旧情况下一样重用 fetch_all 函数。

我有一个包含 20 个选择选项的表单,现在我必须为每个选择选项创建 20 个不同的函数来检索数据,而不是只用另一个表名调用一个函数。我尝试了不同的选择,但不是我想要的结果。我该如何处理?

标签: codeigniter

解决方案


  • 您需要在application/core文件夹中创建一个 base_model。
  • 在那里base_model,您需要定义所有通用函数,如 fetch_all、get_one、get_based_on_id 等
  • 在每个模型中,您需要 2 两件事,从 base_model 继承并设置一个名为tablename或其他适合您的参数,您可以在其中设置要为其定义模型的确切表名
  • 现在在控制器中,您将加载模型并调用 base_model 的函数,例如您加载了User模型,您将调用如下$this->User->fetch_all()
  • Al 想法fetch_all在 base_model 中定义,它会起作用

如果您需要更多信息,请告诉我。


推荐阅读