CodeIgniter修改扩展数据库驱动程序,以便将它们与UNION查询一起使用

时间:2013-08-08 07:31:53

标签: php mysql codeigniter frameworks

我的目标是在CodeIgniter Active Record中使用UNION查询。

有人建议我使用方法$ this-> db-> last_query();获取我想要的查询,然后将其与UNION结合。

问题是$ this-> db-> from(); Active Record中的MySQL驱动程序中使用的方法使用from子句周围的括号(例如:SELECT * FROM('table'))并阻止我使用UNION。

所以我再次检查,发现我可以修改

中定义的_from_tables函数
system/database/drivers/mysql/mysql_driver.php

我更改了代码:

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

但如果我 我在这里问了一个关于如何扩展CI mysql驱动程序的问题(事实上,我只想用自定义的方法替换from方法): CodeIgniter Hooks for Active Record library我被提议提出一个新问题。

因此,有一位用户建议在我的文件夹中添加两个文件:

application/libraries/MY_DB_mysql_driver.php
application/core/MY_Loader.php

使用此方法时出现这些错误:

 A PHP Error was encountered Severity: 8192 Message: Assigning the return value of new by reference is deprecated Filename: core/MY_Loader.php Line Number: 32

所以我修改了他给我的脚本(你可以在https://github.com/EllisLab/CodeIgniter/wiki/Extending-Database-Drivers看到它)删除&在:

$db =& new $my_driver(get_object_vars($db)); 

我现在收到以下错误:

Fatal error: Call to undefined method MY_DB_mysql_driver::where() in \system\libraries\Session.php

如果有人在没有调整系统文件夹的情况下完成了它,请帮助:(

0 个答案:

没有答案