codeigniter在控制器内有太多模型查询

时间:2013-06-02 00:10:27

标签: codeigniter model controller

我没有找到类似的话题,所以我问:

如何解决为我的所有CodeIgniter控制器函数重复相同模型查询的问题?对于我的网站,我必须在几乎相同的重复数据库查询上构建我的页眉和页脚:

class Main extends CI_Controller
       {
       public function aboutus()
    {
    $this->load->model("read_db");
    $commondata["title"] = "Company - ".lang("aboutus");
    $commondata["mainmenu"] = $this->read_db->db_mainmenu();
    $commondata["mainprodcat"] = $this->read_db->db_allprodmaincat();
    $commondata["bestselling"] = $this->read_db->db_bestselling();
    $commondata["brochures"] = $this->read_db->db_allbrochures();
    $this->load->view("headerview", $commondata);

    $contentdata["aboutus"] = $this->read_db->db_aboutus();
    $this->load->view("view_aboutus", $contentdata);

    $this->load->view("footerview");
    }

public function contact()
    {
    $this->load->model("read_db");
    $commondata["title"] = "Company - ".lang("contact");
    $commondata["mainmenu"] = $this->read_db->db_mainmenu();
    $commondata["mainprodcat"] = $this->read_db->db_allprodmaincat();
    $commondata["bestselling"] = $this->read_db->db_bestselling();
    $commondata["brochures"] = $this->read_db->db_allbrochures();
    $this->load->view("headerview", $commondata);

            $contentdata["aboutus"] = $this->read_db->db_contact();
    $this->load->view("contactview", $contentdata);

    $this->load->view("footerview");
    }

       *further functions like this*
       }

有没有选择将相同的重复模型调用外包给另一个函数或文件? 非常感谢任何建议。

1 个答案:

答案 0 :(得分:1)

您可以在模型中创建组功能,然后仅从控制器中调用该功能。 例如:

MODEL

function db_bundle() {
    $data = array();
    $data["mainmenu"] = $this->db_mainmenu();
    $data["mainprodcat"] = $this->db_allprodmaincat();
    $data["bestselling"] = $this->db_bestselling();
    $data["brochures"] = $this->db_allbrochures();
    return $data;
}

CONTROLLER

$commondata = $this->read_db->db_bundle();

注意,您可以通过需要的页面对您的呼叫进行分组,而不是捆绑,因此您可以为联系人,关于我们等提供单独的组...或者您可以使您的捆绑功能接受允许您的参数控制应该和不应该从内部调用哪些函数。