Я изучаю фреймворк воспламенителя кода (версия 1.7.2, которая используется в той версии, где я работаю). Я использую PHP 5.3.9-ZS5.6.0 (cli) и Zend Engine v2.3.0.
У меня проблемы с получением данных из базы данных при вызове модельного класса. (на основе кода из книги «Профессиональный CodeIgniter»).
Вот соответствующая часть метода «index» в «welcome.php»
$data['title'] = "Welcome to Claudia's Kids";
$data['navlist'] = $this->MCats->getCategoriesNav();
$dump = print_r($data['navlist'], true);
log_message('debug',"data['navlist']: " . $dump);
Вот вызываемый метод:
function getCategoriesNav(){
log_message('debug', "in get categories nav");
$data = array();
$this->db->select('id,name,parentid');
$this->db->where('status', 'active');
$this->db->orderby('parentid','asc');
$this->db->orderby('name','asc');
$this->db->groupby('parentid,id');
$Q = $this->db->get('categories');
if ($Q->num_rows() > 0){
foreach ($Q->result() as $row){
if ($row->parentid > 0){
$data[0][$row->parentid]['children'][$row->id] = $row->name;
}else{
$data[0][$row->id]['name'] = $row->name;
}
}
}
$Q->free_result();
log_message('debug', "out get categories nav");
return $data;
}
Это информация о соединении в config / database.php
$db['default']['hostname'] = "localhost";
$db['default']['username'] = "myname";
$db['default']['password'] = "mypass";
$db['default']['database'] = "shopping";
и в базу данных загружены тестовые данные. Проблема в том, что возвращаемый массив пуст. Кроме того, операторы отладки в "getCategoriesNav ()" не отображаются в журнале. Вот вывод журнала, где он должен отображаться:
DEBUG - 2012-03-23 12:13:30 --> Model Class Initialized
DEBUG - 2012-03-23 12:13:30 --> Model Class Initialized
DEBUG - 2012-03-23 11:39:00 --> Controller Class Initialized
DEBUG - 2012-03-23 11:39:00 --> making dbcall
DEBUG - 2012-03-23 11:39:00 --> made dbcall
DEBUG - 2012-03-23 11:39:00 --> data['navlist']: Array
(
)
Класс Model находится в system / application / models / mcats.php. Он автоматически загружается в autoload.php с этим утверждением:
$autoload['model'] = array('MProducts', 'MCats');
Есть идеи, что я делаю не так?