Модель загрузки Codeigniter в библиотеке

Я использую codeigniter 2.1.3

Я пытаюсь загрузить модель из библиотеки. Первоначально мой код в конструкции в библиотеке выглядит следующим образом:

$this->CI=& get_instance(); $this->CI->load->database('default')

Затем в одном из моих библиотечных методов

когда я попробовал строку ниже, он не работает

$this->load->model('model_name')

но когда я попробовал это

$this->CI->load->model('model_name','',TRUE)

он работает, каждый может объяснить, к чему относится экземпляр CI, и 2 дополнительных параметра при загрузке модели? Спасибо заранее.

Ответ 1

Библиотека не обязательно является частью того, как работает CodeIgniter.

Это может быть домашняя библиотека, чтобы решить задачу, которую вы хотите сделать в своем приложении CI.

Это означает, что если вы хотите использовать какие-либо помощники CI, модели или другие библиотеки, вам нужно сделать это через экземпляр CI. Это достигается тем, что:

public function __construct()
{
    $this->CI =& get_instance();
}

Назначив экземпляр вашему члену библиотеки с именем CI, все связанные с CI помощники, модели и библиотеки могут быть загружены через $this->CI. Пытаясь сделать это только с помощью $this, вы ссылаетесь только на текущую библиотеку, а не на экземпляр CI.

Чтобы загрузить модель правильно, в вашей библиотеке $this->CI->load->model('model_name'); достаточно. Второй параметр позволяет получить доступ к вашей модели с помощью другого имени объекта. Третий параметр не нужен для загрузки моделей, но позволяет автоматически загружать драйвер базы данных.

Если вы хотите получить доступ к своей модели через один и тот же элемент:

$respone = $this->CI->model_name->method();

Ответ 2

Вы можете сказать, что функция загрузки модели автоматически подключается путем передачи TRUE (boolean) по третьему параметру, и будут использоваться настройки подключения, как определено в файле конфигурации базы данных:

$this->load->model('Model_name', '', TRUE);

Вы можете узнать об этом в конце страницы этой ниже ссылки.

http://ellislab.com/codeigniter/user-guide/general/models.html

Ответ 3

У меня есть очень простой код, который вы должны использовать, чтобы загрузить модель в библиотеку

<?php
class Custom_lib
{
    private $_CI;
    public function __construct()
    {
        $this->_CI = & get_instance();
        $this->_CI->load->model('Dynamic_Model','dm');
    }


    function currentSession()
    {
        $session = $this->_CI->dm->fetchSingleData('id,session','session',array('is_active'=>1));
        return $session;
    }
}

Я надеюсь, что этот код поможет вам