我可以使用CI3在MY_Controller中加载和使用模型

时间:2016-09-20 16:11:14

标签: php codeigniter

我使用的是Codeigniter 3,我需要一些可用于所有方法的数据。我将从数据库中查询数据,然后我需要在每个页面上显示它。

我创建了一个扩展CI_Controller的MY_Controller并将其保存在/ application / core /

但是我收到了这个错误:

Fatal error: Call to undefined method Area_model::get_user_locations()

MY_Controller:

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

class MY_Controller extends CI_Controller {

    public $location_data;

    function __construct()
    {
        parent::__construct();
        $this->load->database();
        $this->load->model('area_model');
        $org_id = $this->session->userdata('org_id');
        $this->location_data = $this->area_model->get_user_locations($org_id);
    }

}

我可以从MY_controller中访问模型和数据库吗?

Area_model.php

// get all areas for an organisation
public function get_user_locations($org_id) {
    $areas = $this->db->get_where('areas', array('org_id' => $org_id));
    $area_array = $areas->result_array();
    return $area_array;
}

1 个答案:

答案 0 :(得分:0)

MY_Controller

不习惯将任何函数指向__construct() __construct仅加载到任何模型 写其他函数到MY_Controller看起来像这样

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

class MY_Controller extends CI_Controller
{
    public $location_data;
    function __construct()
    {
        parent::__construct();
        $this->load->database();
        $this->load->model('area_model');
        $org_id = $this->session->userdata('org_id');
    }
}

function functionname()
{
        $this->location_data = $this->area_model->get_user_locations($org_id);
}

Area_model.php

public function get_user_locations($org_id)
{
    $areas = $this->db->get_where('areas', array('org_id' => $org_id));
    $area_array = $areas->result_array();
    return $area_array;
}