Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Joomla 2.5-通过API进行多数据库查询_Php_Mysql_Database_Join_Joomla - Fatal编程技术网

Php Joomla 2.5-通过API进行多数据库查询

Php Joomla 2.5-通过API进行多数据库查询,php,mysql,database,join,joomla,Php,Mysql,Database,Join,Joomla,我正在为Joomla 2.5开发一个定制的多跳组件。我知道,这是一项艰巨的工作,但我正在努力,目前一切都进展顺利;) 我正在处理两个数据库: 包含产品所有主要信息的主文件,具有经典结构(产品、类别、产品类别关系、制造商…) 一个只包含本地信息(产品id和一些定制的东西,比如这个特定商店的销售价格)的从站 在主数据库或本地数据库上创建查询的过程正常。一个简单的getDbo()用于本地数据库,一个getInstance用于主数据库,在数组中有新的参数,如 $masterdb = & JD

我正在为Joomla 2.5开发一个定制的多跳组件。我知道,这是一项艰巨的工作,但我正在努力,目前一切都进展顺利;)

我正在处理两个数据库:

  • 包含产品所有主要信息的主文件,具有经典结构(产品、类别、产品类别关系、制造商…)
  • 一个只包含本地信息(产品id和一些定制的东西,比如这个特定商店的销售价格)的从站
在主数据库或本地数据库上创建查询的过程正常。一个简单的getDbo()用于本地数据库,一个getInstance用于主数据库,在数组中有新的参数,如

$masterdb = & JDatabase::getInstance( $master_options );
但是: 如果我想在两个具有连接的数据库之间进行“交叉查询”,该怎么办?比如:

SELECT * 
FROM slave_db.mytable 
LEFT JOIN master_db.othertable
ON slave_db.mytable.column_name=master_db.othertable.column_name;
Joomla的框架允许这样做吗

如果没有,我想我可以用joomla的框架方式编写硬编码请求……但我不太喜欢这个想法……或者我可以单独编写请求,只在PHP中比较/合并/重组数组……但这也太糟糕了


请帮忙!;)

好的,下面是我如何做到这一点的! 这有点鬼鬼祟祟,但很管用

// For Master DB calls.
$master_options['driver']   = MASTER_DRIVER;
$master_options['host']     = MASTER_HOST;
$master_options['user']     = MASTER_USER;
$master_options['password'] = MASTER_PASSWORD;
$master_options['database'] = MASTER_DB;
$master_options['prefix']   = MASTER_PREFIX;
$masterdb = JDatabase::getInstance( $master_options );

$query = $masterdb->getQuery(true);

//slave infos
$app            = JFactory::getApplication();
$slave_prefix   = $app->getCfg('dbprefix');
$slave_name     = $app->getCfg('db');

$query = "SELECT * 
FROM `".$slave_name."`.`".$slave_prefix."mytable`
LEFT JOIN `".$master_options['database']."`.`".$master_options['prefix']."othertable`
ON `".$slave_name."`.`".$slave_prefix."mytable`.`column_name`=`".$master_options['database']."`.`".$master_options['prefix']."othertable`.`column_name`";

$masterdb->setQuery((string)$query);

恐怕是乔姆拉!没有针对这一点的核心解决方案。您需要扩展DBO或使用普通PHP编写自己的外部查询。