Я создал новый класс модели как 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
, поэтому я не мог видеть значение этого свойства до вызова этого метода.
Я пробовал поиск по нескольким другим делам, но ни один из них не соответствовал моим сценариям, и, скорее всего, ни один из них не смог решить мою проблему.
Сначала необходимо загрузить базу данных
$this->load->database();
Итак, весь код:
function get_all(){ $this->load->database(); $query = $this->db->get('test'); //test is my table return $query->result(); }
Или загрузите базу данных в свой метод __construct
.
Или , IMO, лучше автозагрузить базу данных, изменив application/config/autoload.php
, пример ниже.
$autoload['libraries'] = array('database','form_validation'); //form_validation is for example only
В CodeIgniter вы должны загрузить модель базы данных, прежде чем использовать ее. Используйте $this->load->database();
для загрузки модели базы данных.
Ваша ошибка на самом деле довольно проста:
return $query->result;
Должно быть:
return $query->result();
Иногда номер строки, сообщаемый ошибкой PHP, не совсем тот, который вы считаете, парсер просто делает это лучше всего и сообщает, где он обнаружил ошибку.
Есть еще одна проблема:
$res = $this->my_model->getAll();
Должно быть:
$res = $this->my_model->get_all();
Вы назвали свою собственную функцию неправильным именем.