我正在使用codeigniter框架。我在这个框架中没有多少经验。我需要你们的帮助。我想在两个不同的数据库中加入两个表。在这两个表中我都有一个共同的列。我理解,首先我必须在文件database.php中创建一个单独的数据库组。 我已经创建了该组,并且能够在我的模型中单独使用该组。我还在我的模型“默认组”中加载了另一个组。无论何时,我都试图单独使用每个组,它的工作没有任何问题。但我正在努力如何使用这两个数据库组在两个数据库上进行连接。
现在我想使用这两个独立的组加入两个不同数据库的表。但我不确定我到底在做什么错误。
这是我的模特档案。
class Bar_graph extends CI_Model {
public function __construct () {
parent::__construct();
$this->db= $this->load->database('default', TRUE);//This is the default group
$this->db2 = $this->load->database('db2', TRUE); //This is the new group I have created
}
//kalix2 and Asterik are my two different database
public function join_two_database ()
{
$cust_id=2;
$this->db->select('Kalix2.ph_Companies.CompanyName');
$this->db2->select_sum('Asterik.cdr.call_length_billable');
$this->db2->select('Asterik.cdr.calldate');
$this->db->where('Kalix2.ph_Companies.Cust_ID',$cust_id);
$this->db->from('Kalix2.ph_Companies');
$this->db2->group_by('Asterik.cdr.CompanyName');
$this->db->limit(5);
$this->db->join('Asterik.cdr','Kalix2.ph_Companies.CompanyName = Asterik.cdr.CompanyName','inner');
$query = $this->db->get();
if ($query->num_rows > 0) {
return $query-> result();
}
}
答案 0 :(得分:1)
AFAIK,您不能在一个声明中加入这些内容。您一次只能连接一个数据库。您必须在一个数据库上运行查询,在第二个数据库上运行查询,然后在PHP中操作两者的结果。
答案 1 :(得分:0)
function join_two_table(){
$this->db->select("database1.tablename.first_name,database1.tablename.last_name,tablename.*");
$this->db->from('database2.tablename');
$this->db->join('database1.tablename', 'database2.tablename.user_id = database1.tablename.user_id');
$this->db->where('database2.tablename.status', 'open');
$this->db->order_by('database2.tablename.id', 'DESC');
$query = $this->db->get();
return $query->result();
}