【发布时间】:2020-01-13 06:46:37
【问题描述】:
数据库.php
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'main_db',
'dbdriver' => 'mysqli',
'dbprefix' => 'sim_',
'pconnect' => FALSE,
'db_debug' => FALSE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => FALSE,
);
$db['master'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'secondary_db',
'dbdriver' => 'mysqli',
'dbprefix' => 'gap_',
'pconnect' => FALSE,
'db_debug' => FALSE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => FALSE,
);
我在 Codeigniter 3 中使用了两个数据库,并且工作正常。现在我面临着在上述数据库中加入表的问题。有没有可能?如果是,那该怎么做?
示例代码:
public function __construct()
{
parent::__construct();
$this->db_ecom = $this->load->database('master', TRUE);
}
public function getOrderDetails() {
...
$this->db->join('countries', 'countries.country_id=orders.order_country', 'left');
$q = $this->db_ecom->get('orders');
...
}
在上面的代码示例中,$this->db 代表main_db,因此$this->db_ecom 代表secondary_db。
main_db - 包含国家表 (country_id, country_name)。 secondary_db - 包含订单表(带有 Country_id 列)。
所以现在我想加入这些表以将国家/地区显示为名称而不是 ID。
【问题讨论】:
-
当数据库在同一台服务器上时,MySQL 可以进行内部数据库连接
SELECT * FROM database1.table1 INNER JOIN database2.table1 ...您不必像现在这样进行单独的连接.. -
@Martin 我不是 StackOverflow 的新手,我已经检查了你的答案,但它根本没有回答我的问题。如果它看起来真的是重复的,则表明您没有详细说明问题。我们可以将它用作原始查询,但我想知道它是否可能?
-
@silambarasanR.D 我刚刚重读了你的问题,nowhere 你有没有提到你不想使用标准查询来做到这一点
-
我的意思是 -> “发帖前先校对!现在你已经准备好提出你的问题了,深吸一口气,从头到尾通读一遍。假装你是第一次看到它:这有意义吗?尝试自己在一个新的环境中重现问题,并确保您可以仅使用问题中包含的信息来这样做。添加您错过的任何细节并再次阅读它。现在现在是确保您的标题仍然描述问题的好时机!”
标签: php mysql database codeigniter join