有沒有任何機構知道如何使用codeignitor活動記錄從兩個不同的數據庫連接兩個表?使用codeigniter中的活動記錄加入兩個數據庫
我有這兩個數據庫實例:
$this->DB2 = $this->load->database('asterisk', TRUE);
$this->DB1 = $this->load->database('default', TRUE);
我想從兩個不同的數據庫連接兩個表。我怎樣才能做到這一點?
請,如果你有任何文檔鏈接給我。
有沒有任何機構知道如何使用codeignitor活動記錄從兩個不同的數據庫連接兩個表?使用codeigniter中的活動記錄加入兩個數據庫
我有這兩個數據庫實例:
$this->DB2 = $this->load->database('asterisk', TRUE);
$this->DB1 = $this->load->database('default', TRUE);
我想從兩個不同的數據庫連接兩個表。我怎樣才能做到這一點?
請,如果你有任何文檔鏈接給我。
你有沒有嘗試在每個數據庫的前綴?我沒有訪問我的本地服務器來測試這一點,但如果你有權限,這兩個數據庫類似這樣的東西應該工作:
$this->db->select('*');
$this->db->from('asterisk.blogs');
$this->db->join('default.comments', 'default.comments.id = asterisk.blogs.id');
如果找你不能夠參加在兩個不同的數據庫,並且不想使用常規的SQL語句 - 您可以使用ActiveRecord緩存來嘗試執行此操作。
http://ellislab.com/codeigniter/user-guide/database/active_record.html#caching
一些「僞代碼」,可能無法正常工作 - 但可能會幫助你開始。
$this->db = $this->load->database('asterisk', TRUE);
$this->db->start_cache();
$this->db->select('*');
$this->db->stop_cache();
$this->db->get('table1');
$this->db = $this->load->database('default', TRUE);
$this->db->select('*');
$this->db->from('table2');
$this->db->join('table1', 'table1.id = table2.id');
$this->db->get();
在模型中調用另一個DB:
function __construct() {
parent::__construct();
$this->DB2= $this->load->database('DB2', TRUE);
}
就用數據庫的名稱上加入
function get_personas() {
$this->db->join('DB2.administrador c', 'c.id_administrador = personas.id_administrador', 'left');
$this->db->select('c.administrador_nombre AS admin', FALSE);
$this->db->join('tipo_identificacion b', 'b.id_tipo_identificacion = personas.id_tipo_identificacion', 'left');
$this->db->select('b.tipo_identificacion_nombre', FALSE);
$this->db->select('personas.*', FALSE);
$this->db->where('id_personas <>', 1);
$query = $this->db->get('personas');
if ($query->num_rows() > 0) {
return $query->result();
} else {
return FALSE;
}
}
是有一些機會,你不必指定ON部分?因爲我可以指定它沒有活動記錄,但我不知道如何並排活動記錄。當我忽略'$ this-> db-> join()'函數中的第二個參數時,SQL左邊總是有一個「ON」。能否請你幫忙? – kalafun 2013-09-17 16:56:23