Codeigniter多个数据库连接

时间:2013-01-04 14:37:23

标签: database codeigniter join

我正在使用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(); 
                    }
                }

2 个答案:

答案 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();
}