我的目标是在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
如果有人在没有调整系统文件夹的情况下完成了它,请帮助:(