我需要一些帮助来理解CodeIgniter的钩子逻辑,以使代码适应我的需要。
页面:https://www.codeigniter.com/user_guide/general/hooks.html
事实上,我不得不修改MySQL的数据库驱动程序:
function _from_tables($tables)
{
if ( ! is_array($tables))
{
$tables = array($tables);
}
return '('.implode(', ', $tables).')';
}
到此:
function _from_tables($tables)
{
if ( ! is_array($tables))
{
$tables = array($tables);
}
return implode(', ', $tables);
}
我让这个mod使用Active Record库来使用UNION查询。
当我更新核心系统时,有人可以帮我勾选以防止我的修改被覆盖吗?
提前致谢!
答案 0 :(得分:1)
您可以在CodeIgniter Wiki - Extending Database Drivers
上找到有关扩展数据库驱动程序的说明解决方案分为3个简单步骤:
1)通过创建文件MY_Loader.php来扩展您的loader类。把它 进入应用程序路径中的libraries目录(或者如果你是 使用CI 2.x.x然后将其放入application \ core \ path):
2)将以下功能添加到MY_Loader类:
3)创建您命名的数据库驱动程序扩展类 MY_DB_mysql_driver.php(或者用mysql部分代替什么 您使用的驱动程序 - 也为下面代码中的类名执行此操作!)。 将此文件也放在应用程序库目录中:
您的自定义数据库驱动程序将如下所示
class MY_DB_mysql_driver extends CI_DB_mysql_driver {
function __construct($params){
parent::__construct($params);
log_message('debug', 'Extended DB driver class instantiated!');
}
function _from_tables($tables)
{
if ( ! is_array($tables))
{
$tables = array($tables);
}
return implode(', ', $tables);
}
}