Intereting Posts
php допускает только буквы, цифры, пробелы и конкретные символы, используя pregmatch Регистрация не работает в Laravel 5 Удаление строки из вывода php json Карты Google – панорамирование и масштабирование по областям – маркеры не появляются при увеличении или панорамировании – ПОМОЩЬ! Добавление данных в переменную php с помощью PDO fetchAll :: fetch_assoc Динамические перезаписи в файле htaccess Отправлять данные в базу данных при нажатии ссылки без обновления страницы. Regex – удалить теги 'a', где ссылка содержит определенные домены Как выбрать идентификатор строки mysql для предложения WHERE в UPDATE, INSERT, DELETE через php? Symfony. Почему моя форма получает каждый ответ, который существует в таблице? Наследование статических членов в PHP Перенаправление на реферер при отправке формы Perl-эквивалент PHP-escapeshellarg .htaccess переписать правило со статическими файлами дает мне 404, что мне не хватает? PHP cURL Почтовый запрос не работает

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

Я создал новый класс модели как 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 , поэтому я не мог видеть значение этого свойства до вызова этого метода.

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

Solutions Collecting From Web of "Ошибка модели Codeigniter"

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

 $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(); 

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