CodeIgniter Forums
Adding database functionallity - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: Using CodeIgniter (https://forum.codeigniter.com/forum-5.html)
+--- Forum: General Help (https://forum.codeigniter.com/forum-24.html)
+--- Thread: Adding database functionallity (/thread-61652.html)



Adding database functionallity - JustMoes - 05-04-2015

Hello,

I want to add THIS functionallity to the db->insert function, but i have no idea how to add such functionallity.

I thought i could do something like this:
Code:
class MY_db extends CI_db {

public function __construct($params) {
  parent::__construct($params);
           log_message('debug', 'Extended DB class instantiated!');
  }

public function insert($table = '', $set = NULL, $escape = NULL, $update_on_duplicate = FALSE) {
// Use regular insert function when $update_on_duplicate == FALSE
if(!$update_on_duplicate) return parent::insert($table, $set, $escape);

// --- My code ---

}


}

Can anyone tell me where i should put this code and how i can (auto)load the class?

Greetz

PS: Sorry for my awfull English Angel


RE: Adding database functionallity - mwhitney - 05-04-2015

You should probably do this in a base model (MY_Model.php) instead of trying to extend the database library.


RE: Adding database functionallity - Urastor - 05-06-2015

As mwhitney said, extending the db of CI isn't the way to go here.
You could add a model (MY_Model) to your core folder and extends CI_Model. To get access to every model, run parent::__construct(); in the constructor of MY_Model. Then simply overwrite insert in MY_Model, like this:

PHP Code:
<?php

class MY_Model extends CI_Model {
 
 public function 
__construct()
 {
 
parent::__construct();
 }

 public function 
insert($table ''$set NULL$escape NULL$update_on_duplicate FALSE)
 {
 if(!
update_on_duplicate)
 return 
parent::insert($table$set$escape);

 
//your code
 
}


This is also a nice way to get ride of typing the table everytime, because you could add a protected field $table to the class and the method use it via $this->table.
In another model, which extends MY_Model., you then can overwrite $table, so that for example a user model, which uses a user table, automatically uses $table instead of typing the user table every time.


PHP Code:
<?php

class MY_Model extends CI_Model {
 
 protected 
$table '';

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

 public function 
insert($set NULL$escape NULL$update_on_duplicate FALSE)
 {
 
    if(!update_on_duplicate)
 
        return parent::insert($this->table$set$escape);

 
    //your code
 
}


But this is optional. Tongue


RE: Adding database functionallity - JustMoes - 05-10-2015

Thanks for your help and explanation. I've found a tutorial by Joost van Veen about the MY_Model thing, very clear tutorial in my opinion.