Я использую codeigniter 1.7.3, и у меня настроены и работают контроллеры, но у меня возникают проблемы с возвратом результата запроса при попытке доступа к модели через контроллер.
Моя база данных настроена правильно в области конфигурации (я знаю это, потому что, когда я намеренно испорчу один из параметров конфигурации, я получаю сообщение о том, что к базе данных нет доступа.)
Вот соответствующий контроллер Код (SiteObj.php):
class SiteObj extends Controller {
function __construct() {
parent::Controller();
$this->load->model('Site_model');
$data['query'] = $this->Site_model->create_site();
if ($data->num_rows() == 1) {
//etc. etc.
А вот соответствующий код модели (site_model.php):
class Site_model extends Model {
function __construct() {
parent::Model();
$this->load->database();
}
function create_site(){
$query = $this->db->query("SELECT * FROM sites WHERE siteid = '1' LIMIT 1");
if ($query->num_rows() > 0) {
$row = $query->row();
return $row;
// etc etc
Я также пытался назвать исходную функцию Site_model вместо конструктора, но безуспешно. И я также попробовал автоматически загрузить базу данных через файл autoload.php, а также загрузив базу данных в самой функции create_site вместо функции конструктора.
Вот сообщение об ошибке, которое я получаю:
Неустранимая ошибка: вызов функции-члена num_rows() для объекта, не являющегося объектом в
/www/development/sunrise_ci/00ci00/application/init/siteObj.php в строке 9
ОБНОВЛЕНИЕ: Я последовал совету, данному первым ответившим, но это не помогло.
С тех пор я удалил все ссылки на подключение к базе данных, пытаясь изолировать проблему. Когда я просто пытаюсь вызвать функцию create_site() из контроллера, я получаю следующее:
Undefined property: SiteObj::$Site_model
Fatal error: Call to a member function create_site() on a non-object
Похоже, что проблема заключается между контроллером и моделью, они почему-то не «разговаривают» друг с другом правильно. Интересно, что я вижу, что могу передать значение контроллеру из create_site(), но вместе с ним все равно получаю сообщение об ошибке.
************ ОБНОВЛЕНИЕ от 18 декабря **********************
Хорошо, во-первых, я внес поправки в файл application/config/hooks.php, чтобы я мог предварительно загружать свой код инициализации перед вызовами всех страниц. Итак, на этой странице есть следующее:
$hook['pre_controller'][] = array(
'class' => 'SiteObj',
'function' => '__construct',
'filename' => 'siteObj.php',
'filepath' => 'init'
);
Далее у меня есть контроллер по умолчанию, обрабатывающий все вызовы страниц. Он расположен по адресу контроллеры/page.php, вот этот код:
class Page extends Controller {
// I am the core controller for the application.
function _remap() {
$mysite = new SiteObj();
}
}
Это вызывает объект инициализации, который я настроил в application/init/siteobj.php. Вот этот код:
class SiteObj extends Controller {
function __construct() {
parent::Controller();
$this->load->model('Site_model');
$data = $this->Site_model->create_site();
if ($data){
$this->siteid = $data->siteid;
} else {
$this->siteid = 0;
}
}
}
Наконец, вот код модели в models/site_model.php:
class Site_model extends Model {
function Site_model() {
parent::Model();
$this->load->database();
}
public function create_site(){
// I load the site data from the database and send the result to the controller
$query = $this->db->query("SELECT * FROM sites WHERE siteid = '1' LIMIT 1");
if ($query->num_rows() == 1) {
return $query->row();
}
}
}
Я получаю следующую ошибку:
Undefined property: SiteObj::$Site_model
Fatal error: Call to a member function create_site() on a
non-object in
/www/development/sunrise_ci/00ci00/application/init/siteObj.php
on line 7
Подробнее здесь: https://stackoverflow.com/questions/447 ... -and-model
Проблема Codeigniter с контроллером и моделью ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1773042411
Anonymous
Я использую codeigniter 1.7.3, и у меня настроены и работают контроллеры, но у меня возникают проблемы с возвратом результата запроса при попытке доступа к модели через контроллер.
Моя база данных настроена правильно в области конфигурации (я знаю это, потому что, когда я намеренно испорчу один из параметров конфигурации, я получаю сообщение о том, что к базе данных нет доступа.)
Вот соответствующий контроллер Код (SiteObj.php):
class SiteObj extends Controller {
function __construct() {
parent::Controller();
$this->load->model('Site_model');
$data['query'] = $this->Site_model->create_site();
if ($data->num_rows() == 1) {
//etc. etc.
А вот соответствующий код модели (site_model.php):
class Site_model extends Model {
function __construct() {
parent::Model();
$this->load->database();
}
function create_site(){
$query = $this->db->query("SELECT * FROM sites WHERE siteid = '1' LIMIT 1");
if ($query->num_rows() > 0) {
$row = $query->row();
return $row;
// etc etc
Я также пытался назвать исходную функцию Site_model вместо конструктора, но безуспешно. И я также попробовал автоматически загрузить базу данных через файл autoload.php, а также загрузив базу данных в самой функции create_site вместо функции конструктора.
Вот сообщение об ошибке, которое я получаю:
Неустранимая ошибка: вызов функции-члена num_rows() для объекта, не являющегося объектом в
/www/development/sunrise_ci/00ci00/application/init/siteObj.php в строке 9
ОБНОВЛЕНИЕ: Я последовал совету, данному первым ответившим, но это не помогло.
С тех пор я удалил все ссылки на подключение к базе данных, пытаясь изолировать проблему. Когда я просто пытаюсь вызвать функцию create_site() из контроллера, я получаю следующее:
Undefined property: SiteObj::$Site_model
Fatal error: Call to a member function create_site() on a non-object
Похоже, что проблема заключается между контроллером и моделью, они почему-то не «разговаривают» друг с другом правильно. Интересно, что я вижу, что могу передать значение контроллеру из create_site(), но вместе с ним все равно получаю сообщение об ошибке.
************ ОБНОВЛЕНИЕ от 18 декабря **********************
Хорошо, во-первых, я внес поправки в файл application/config/hooks.php, чтобы я мог предварительно загружать свой код инициализации перед вызовами всех страниц. Итак, на этой странице есть следующее:
$hook['pre_controller'][] = array(
'class' => 'SiteObj',
'function' => '__construct',
'filename' => 'siteObj.php',
'filepath' => 'init'
);
Далее у меня есть контроллер по умолчанию, обрабатывающий все вызовы страниц. Он расположен по адресу контроллеры/page.php, вот этот код:
class Page extends Controller {
// I am the core controller for the application.
function _remap() {
$mysite = new SiteObj();
}
}
Это вызывает объект инициализации, который я настроил в application/init/siteobj.php. Вот этот код:
class SiteObj extends Controller {
function __construct() {
parent::Controller();
$this->load->model('Site_model');
$data = $this->Site_model->create_site();
if ($data){
$this->siteid = $data->siteid;
} else {
$this->siteid = 0;
}
}
}
Наконец, вот код модели в models/site_model.php:
class Site_model extends Model {
function Site_model() {
parent::Model();
$this->load->database();
}
public function create_site(){
// I load the site data from the database and send the result to the controller
$query = $this->db->query("SELECT * FROM sites WHERE siteid = '1' LIMIT 1");
if ($query->num_rows() == 1) {
return $query->row();
}
}
}
Я получаю следующую ошибку:
Undefined property: SiteObj::$Site_model
Fatal error: Call to a member function create_site() on a
non-object in
/www/development/sunrise_ci/00ci00/application/init/siteObj.php
on line 7
Подробнее здесь: [url]https://stackoverflow.com/questions/4475994/codeigniter-issue-with-controller-and-model[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия