2

我需要一些帮助来理解 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);
}

我使用 Active Record 库制作了这个 mod 来使用 UNION 查询。

有人可以帮我做一个钩子,以防止在我更新核心系统时我的修改被覆盖吗?

提前致谢 !

4

1 回答 1

1

您可以在CodeIgniter Wiki - 扩展数据库驱动程序上找到扩展数据库驱动程序的说明

解决方案分为 3 个简单的步骤:

1) 通过创建文件 MY_Loader.php 扩展您的加载器类。将其放入应用程序路径中的库目录中(或者如果您使用的是 CI 2.xx,则将其放入 application\core\ 路径中):

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);
  }

}
于 2013-08-05T15:57:47.123 回答