Разве нам не нужно сначала загружать класс базы данных, прежде чем использовать какие-либо объекты или методы в этом классе в codeigniter? - PullRequest
0 голосов
/ 10 февраля 2011

Вот некоторый код, взятый из руководства пользователя Codeigniter о моделях. Нет явной загрузки класса базы данных, в котором объект db , метод get в коде ниже должны быть определены Я проверил файл автозагрузки, автозагрузка этого конкретного класса отсутствует.

class Blogmodel extends CI_Model {

    var $title   = '';
    var $content = '';
    var $date    = '';

    function __construct()
    {
        // Call the Model constructor
        parent::__construct();
    }

    function get_last_ten_entries()
    {
        $query = $this->db->get('entries', 10);
        return $query->result();
    }

    function insert_entry()
    {
        $this->title   = $_POST['title']; // please read the below note
        $this->content = $_POST['content'];
        $this->date    = time();

        $this->db->insert('entries', $this);
    }

    function update_entry()
    {
        $this->title   = $_POST['title'];
        $this->content = $_POST['content'];
        $this->date    = time();

        $this->db->update('entries', $this, array('id' => $_POST['id']));
    }

}

Ответы [ 3 ]

3 голосов
/ 10 февраля 2011

В документации CodeIgniter говорится о двух методах загрузки библиотеки базы данных и подключения:

База данных - Руководство пользователя

Автоматическое подключение

Функция «автоподключение» загружает и создает экземпляр класса базы данных при каждой загрузке страницы.Чтобы включить «автоматическое подключение», добавьте базу данных слов в массив библиотеки, как указано в следующем файле:

application/config/autoload.php

Подключение вручную

Если только некоторые изваши страницы требуют подключения к базе данных, вы можете вручную подключиться к вашей базе данных, добавив эту строку кода в любую функцию, где это необходимо, или в конструкторе вашего класса, чтобы сделать базу данных доступной глобально в этом классе.

$ this-> load-> database ();

Кроме того, при загрузке модели, на которую ссылается jss:

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

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

2 голосов
/ 10 февраля 2011

Если вы прокрутите до конца страницы моделей в руководстве пользователя, где вы получили этот пример, вы увидите раздел, помеченный Подключение к вашей базе данных , первое, что он объясняет, это:

Когда модель загружена, она НЕ автоматически подключается к вашей базе данных.

Затем предоставляется три доступных варианта подключения.

0 голосов
/ 10 февраля 2011

CodeIgniter автоматически загружает класс БД на основе application / config / database.php

не нужно в разделе автозагрузки

больше объяснений включено http://codeigniter.com/user_guide/database/connecting.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...