我需要在我的模型codeigniter中设置第二个数据库

时间:2017-09-16 12:34:15

标签: php codeigniter

我需要在我的模型codeigniter中使用第二个数据库。 我的默认是苏拉特, 我的第二个数据库是'sistem mutu'; 我的database.php是:

<?php 
....
$db['default'] = array(
    'dsn' => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '',
    'database' => 'surat',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

$db['sistem_mutu'] = array(
    'dsn' => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '',
    'database' => 'sistem_mutu',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE);  

我在文件夹application / models /中有代码codeigniter 使用是db default。我需要打开'sistem_mutu'数据库,而不是默认的db('surat')。

我在模型中的代码::

<?php
//Fuile ada di model/instruksi_kerja/instruksi_kerja_model.php
defined('BASEPATH') OR exit('No direct script access allowed');
class Instruksi_Kerja_model extends CI_Model {
    var $table = 'instruksi_kerja';
    var $column_order = array(
        'id_ik',
        'nama_ik',
        'kode_dokumen',
        'lingkup_kerja',
        'referensi',
        null);
    var $column_search = array(
        'nama_ik',
        'kode_dokumen',
        'lingkup_kerja'

    ); 
    var $order = array('nama_ik' => 'desc'); 

    public function __construct()
    {
        parent::__construct();

        $this->load->database();

    }

    private function _get_datatables_query()
    {

        $this->db->from($this->table);

        $i = 0;

        foreach ($this->column_search as $item) // loop column 
        {
            if($_POST['search']['value']) // if datatable send POST for search
            {

                if($i===0) // first loop
                {
                    $this->db->group_start(); // open bracket. query Where with OR clause better with bracket. because maybe can combine with other WHERE with AND.
                    $this->db->like($item, $_POST['search']['value']);
                }
                else
                {
                    $this->db->or_like($item, $_POST['search']['value']);
                }

                if(count($this->column_search) - 1 == $i) //last loop
                    $this->db->group_end(); //close bracket
            }
            $i++;
        }

        if(isset($_POST['order'])) // here order processing
        {
            $this->db->order_by($this->column_order[$_POST['order']['0']['column']], $_POST['order']['0']['dir']);
        } 
        else if(isset($this->order))
        {
            $order = $this->order;
            $this->db->order_by(key($order), $order[key($order)]);
        }
    }

    function get_datatables()
    {
        $this->_get_datatables_query();
        if($_POST['length'] != -1)
            $this->db->limit($_POST['length'], $_POST['start']);
        $query = $this->db->get();
        return $query->result();
    }

    function count_filtered()
    {
        $this->_get_datatables_query();
        $query = $this->db->get();
        return $query->num_rows();
    }

    public function count_all()
    {
        $this->db->from($this->table);
        return $this->db->count_all_results();
    }

    public function get_by_id($id)
    {
        $this->db->from($this->table);
        $this->db->where('id_ik',$id);
        $query = $this->db->get();

        return $query->row();
    }

    public function save($data)
    {
        $this->db->insert($this->table, $data);
        return $this->db->insert_id();
    }

    public function update($where, $data)
    {
        $this->db->update($this->table, $data, $where);
        return $this->db->affected_rows();
    }

    public function delete_by_id($id)
    {
        $this->db->where('id_ik',$id);
        $this->db->delete($this->table);
    }


}

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

更改构造方法如下:

public function __construct()
{
parent::__construct();

$this->load->database();
$this->db = $this->load->database('sistem_mutu', TRUE); //<---initialize db with second database

}