Codeigniter,如何从模型重用功能

时间:2018-08-23 20:24:04

标签: 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个不同的函数来检索数据,而不是仅使用另一个表名来调用一个函数。我尝试了其他选项,但没有达到我想要的结果。我该如何处理?

1 个答案:

答案 0 :(得分:0)

  • 您需要在application/core文件夹中创建一个base_model。
  • 在该base_model中,您需要定义所有通用函数,例如fetch_all,get_one,get_based_on_id等
  • 在每个模型中,您需要做两件事:从base_model继承并设置一个名为tablename的参数,或者其他适合您的条件,其中设置了要为其定义模型的确切表名。
  • 现在在控制器中,您将加载模型并调用base_model的函数,例如,您加载了User模型,您将像$this->User->fetch_all()一样调用
  • 认为fetch_all是在base_model中定义的,它将起作用

让我知道是否需要更多信息。