Чтобы расширить класс базы данных, не залезая в код фреймворка, можно сделать следующим образом:
1.) Расширить класс MY_Loader
class MY_Loader extends CI_Loader
{
public function database($params = '', $return = FALSE, $active_record = NULL)
{
require_once(BASEPATH.'database/DB_driver'.EXT);
require_once(BASEPATH.'database/DB_active_rec'.EXT);
require_once (APPPATH.'core/MY_Db'.EXT);
return parent::database($params, $return, $active_record);
}
}
2.) В файле application/core/MY_Db.php расширить класс базы данных
class CI_DB extends CI_DB_active_record
{
public function result($table)
{
return $this->get($table)->result();
}
public function row($table)
{
return $this->limit(1)->get($table)->row();
}
}
При таком расширении класс базы данных всегда содержит Active Record, независимо от значения $db['active_record'] в конфигурации приложения. Однако, в одной из последних обновлений третьей версии фреймворка, опцию $active_reсord в функции database убрали, поэтому проблемы в этом нет.
06.06.2012