【问题标题】:How can I avoid multiple model calling at a codeigniter controller functions?如何避免在 codeigniter 控制器功能上调用多个模型?
【发布时间】:2016-05-17 07:55:29
【问题描述】:

假设我在 codeigniter 有这个课程:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller
{
    function header(){
        $this->load->model("options_model");
        $data['options'] = $this->options_model->get_options();
        $this->load->view("header", $data);
    }

    function content(){
        $this->load->view("content");
        // ...
    }

    function footer(){
        $this->load->model("options_model");
        $data['options'] = $this->options_model->get_options();
        $this->load->view("footer", $data);
    }

    function index(){
        $this->header();
        $this->content();
        $this->footer();
    }
}

如您所见,我在页眉和页脚重复调用 options_model 和方法 get_options。然后,在索引处,我调用了页眉和页脚。在这种情况下如何避免重复方法。或者这种情况的最佳方法是什么?

【问题讨论】:

    标签: php codeigniter controller models


    【解决方案1】:

    您可以在application/config/autoload.php 中调用您的模型,它将包含在您的所有项目中

    $autoload['model'] = array('options_model'); 
    

    如果你想在单个控制器下上传。然后你可以在构造内部调用它

     public function __construct() 
        {
            parent::__construct();
            $this->load->model("options_model"); // load it here??
        }
    

    添加functin的正确拼写是function

    【讨论】:

    • 谢谢@Saty。我知道我可以使用 autoload.php 但我想知道在多个函数中调用 get_options() 。然后我打电话给他们。如果有办法避免在页眉和页脚中调用它以减少服务器负载和模型执行查询的次数。
    【解决方案2】:

    为避免在两个标头中调用模型 (get_options()),我希望您为其创建自定义帮助程序并直接在视图中调用它。

    https://www.codeigniter.com/user_guide/general/helpers.html了解更多信息

    【讨论】:

    • 您提供的链接指向旧文档。 EllisLab 不再负责,新文档位于 codeigniter.com
    • ed 主要问题不是调用模型本身,而是调用方法 get_optins() 两次。我认为查询执行了两次。我想避免这种情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 2012-04-16
    • 2019-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多