Ошибка модели Codeigniter - PullRequest
       1

Ошибка модели Codeigniter

0 голосов
/ 24 декабря 2011

Я создал новый класс модели как my_model.php внутри папки /models и функцию внутри нее для загрузки всех элементов:

function get_all(){
    $query = $this->db->get('test'); //test is my table 
   return $query->result();
}

В контроллере я создал экземпляр класса и вызвал метод;

$this->load->model('my_model');
$res = $this->my_model->get_all();

Но это выдает мне ошибку, говоря:

Неустранимая ошибка: вызов функции-члена get () для необъекта в / var / www / testapp/application/models/my_model.php в строке 7

Эта строка 7 указывает на часть кода, где я использовал $this->db.Я пытался увидеть значение $db, но я думаю, что это магический метод доступа __get и __set, поэтому я не мог увидеть значение этого свойства перед вызовом этого метода.

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

Ответы [ 3 ]

5 голосов
/ 24 декабря 2011

Сначала нужно загрузить базу данных

$this->load->database();

Итак, весь код:

function get_all(){
    $this->load->database();
    $query = $this->db->get('test'); //test is my table 
    return $query->result();
}

Или , загрузите базу данных по вашему __construct методу.

Или , ИМО, лучше загрузить базу данных, изменив application/config/autoload.php, пример ниже.

$autoload['libraries'] = array('database','form_validation'); //form_validation is for example only
3 голосов
/ 24 декабря 2011

В CodeIgniter вы должны загрузить модель базы данных, прежде чем использовать ее.Используйте $this->load->database(); для загрузки модели базы данных.

2 голосов
/ 24 декабря 2011

Ваша ошибка на самом деле довольно проста:

return $query->result;

Должно быть:

return $query->result();

Иногда номер строки, сообщаемый ошибкой PHP, не совсем такой, как вы думаете, анализатор просто делает все возможное и сообщает, где обнаружил ошибку.

Есть еще одна проблема:

$res = $this->my_model->getAll();

Должно быть:

$res = $this->my_model->get_all();

Вы вызвали свою собственную функцию с неправильным именем.

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