Notifikasi
Tidak ada notifikasi baru.
Penelusuran Trending (7 hari terakhir)

Hindari Pengulangan Query dengan bantuan MY_Model

Codeigniter memungkinkan anda melakukannya dengan membuat "MY_Model" di dalam folder core aplikasi anda.

Sering kali saya menemukan diri saya melakukan queries yang sama berulang-ulang untuk setiap tabel yang digunakan oleh aplikasi. Inilah sebabnya saya harus membuat model "universal" untuk menghindari pengulangan. Codeigniter memungkinkan anda melakukannya dengan membuat "MY_Model" di dalam folder core aplikasi anda.

Methodsnya adalah sebagai berikut:

get_all()

public function get_all($where_arr = NULL, $order_by_var_arr = NULL, $select = NULL)

Semua argumen method ini bersifat opsional. tetapi, jika anda perlu memiliki array dengan ketentuan yang harus dipenuhi oleh records, anda dapat menggunakan array $where_arr().  Juga, jika Anda perlu order dengan kolom tertentu, Anda dapat menggunakan string dengan nama kolom atau array yang memiliki elemen: "nama kolom" dan "jenis ordering". Anda juga dapat memilih untuk hanya kolom tertentu dengan menghitungnya dalam sebuah string.

method ini akan mengembalikan objek sebagai hasilnya.

get()

get($where_arr = NULL)

Method ini akan mengembalikan satu baris result, dengan kondisi yang harus dipenuhi.

insert()

insert($columns_arr)

Method ini menerima parameter array dengan kolom dan nilai yang ingin anda masukan.

update()

update($columns_arr, $where_arr)

Method ini digunakan untuk memperbaharui data dengan menerima 2 paramater dan hasil yang dikembalikan berbentuk integer.

delete()

delete($where_arr)

Method ini akan menghapus baris berdasarkan data di dalam array $where_arr.

Apa yang harus dilakuakan dengan MY_Model

Anda harus menyimpan file MY_Model.php di dalam folder application/core.

Setelah Anda menyimpannya, Anda dapat memanggilnya dari dalam model apa pun yang Anda buat dengan memperluas model sebagai berikut:

Any_model.php

class Any_model extends MY_Model
{
    public function __construct()
    {
        parent::__construct();
        $this->table ='your_table';
    }
    //... other methods that you want to use
}


Seperti yang Anda lihat, Anda harus memperluas MY_Model dan di konstruktor, Anda harus memberi nama tabel utama model Anda.

Sekarang Anda cukup menggunakan metode pada model apa pun yang memperluas kelas MY_Model.

Sekarang, izinkan saya menunjukkan MY_Model saya:

MY_Model.php

class MY_Model extends CI_Model
{
    protected $table;
    public $where_arr = NULL;

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

 // --------------------------------------------------------------------

    /** retrieve all records from DB
    *
    * @param array $where_arr
    * @param var|array $order_by_var_arr
    * @param var $select
    * @return object
    */
    public function get_all($where_arr = NULL, $order_by_var_arr = NULL, $select = NULL)
    {
        if(isset($where_arr))
        {
            $this->db->where($where_arr);
        }

        if(isset($order_by_var_arr))
        {
            if(!is_array($order_by_var_arr))
            {
                $order_by[0] = $order_by_var_arr;
                $order_by[1] = 'asc';
            }
            else
            {
                $order_by[0] = $order_by_var_arr[0];
                $order_by[1] = $order_by_var_arr[1];
            }
            $this->db->order_by($order_by[0],$order_by[1]);
        }

        if(isset($select))
        {
            $this->db->select($select);
        }

        $query = $this->db->get($this->table);
        echo $this->db->last_query();
        if($query->num_rows()>0)
        {
            foreach($query->result() as $row)
            {
                $data[] = $row;
            }
            return $data;
        }
        else
        {
            return FALSE;
        }
    }

 // --------------------------------------------------------------------

    /**
    * Retrieve one record from DB
    * @param type $where_arr
    * @return object
    */
    public function get($where_arr = NULL)
    {
        if(isset($where_arr))
        {
            $this->db->where($where_arr);
            $this->db->limit(1);
            $query = $this->db->get($this->table);
            if($query->num_rows() > 0)
            {
                return $query->row();
            }
            else
            {
                return FALSE;
            }
        }
        else
        {
            return FALSE;
        }
    }

 // --------------------------------------------------------------------

    /**
    * Insert a record into DB
    * @param type $columns_arr
    * @return int insert id
    */
    public function insert($columns_arr)
    {
        if(is_array($columns_arr))
        {
            if($this->db->insert($this->table,$columns_arr))
            {
                return $this->db->insert_id();
            }
            else
            {
                return FALSE;
            }
        }
    }

 // --------------------------------------------------------------------

    /**
    * Update record(s)
    * @param type $columns_arr
    * @param type $where_arr
    * @return int affected rows
    */
    public function update($columns_arr, $where_arr = NULL)
    {
        if(isset($where_arr))
        {
            $this->db->where($where_arr);
            $this->db->update($this->table, $columns_arr);
            if($this->db->affected_rows()>0)
            {
                return $this->db->affected_rows();
            }
        }
        else
        {
            return FALSE;
        }
    }

 // --------------------------------------------------------------------

    /**
    * Delete row(s)
    * @param type $where_arr
    * @return int affected rows
    */
    public function delete($where_arr = NULL)
    {
        if(isset($where_arr))
        {
            $this->db->where($where_arr);
            $this->db->delete($this->table);
            return $this->db->affected_rows();
        }
        else
        {
            return FALSE;
        }
    }
}


codeigniter
owin
owin
Front-end web developer at