Siddharth Murari
Siddharth Murari

Reputation: 94

inheriting a model in codeigniter

I have created a custom model (My_Model) containing all the crud functions. now i want to inherit that general model class in other models.

application/core/My_Model.php

<?php 

class My_Model extends CI_Model {

protected $_table;
public function __construct() {
    parent::__construct();
    $this->load->helper("inflector");
    if(!$this->_table){
        $this->_table = strtolower(plural(str_replace("_model", "", get_class($this))));
    }
}

public function get() {
    $args = func_get_args();
    if(count($args) > 1 || is_array($args[0])) {
        $this->db->where($args[0]);
    } else {
        $this->db->where("id", $args[0]);
    }
    return $this->db->get($this->_table)->row();
}

public function get_all() {
    $args = func_get_args();
    if(count($args) > 1 || is_array($args[0])) {
        $this->db->where($args[0]);
    } else {
        $this->db->where("id", $args[0]);
    }
    return $this->db->get($this->_table)->result();
}

public function insert($data) {
    $success = $this->db->insert($this->_table, $data);
    if($success) {
        return $this->db->insert_id();
    } else {
        return FALSE;
    }
}

public function update() {
    $args = func_get_args();
    if(is_array($args[0])) {
        $this->db->where($args[0]);
    } else {
        $this->db->where("id", $args[0]);
    }
    return $this->db->update($this->_table, $args[1]);
}

public function delete() {
    $args = func_get_args();
    if(count($args) > 1 || is_array($args[0])) {
        $this->db->where($args[0]);
    } else {
        $this->db->where("id", $args[0]);
    }
    return $this->db->delete($this->_table);        
}

}

?>

application/models/user_model.php

<?php 

class User_model extends My_Model { }

?>

application/controllers/users.php

<?php 

class Users extends CI_Controller {

public function __construct() {
    parent::__construct();
    $this->load->model("user_model");
}

function index() {

    if($this->input->post("signup")) {
        $data = array(
                "username" => $this->input->post("username"),
                "email" => $this->input->post("email"),
                "password" => $this->input->post("password"),
                "fullname" => $this->input->post("fullname")
            );
        if($this->user_model->insert($data)) {
            $this->session->set_flashdata("message", "Success!");
            redirect(base_url()."users");
        }
    }
    $this->load->view("user_signup");
}

}

?>

when i load the controller i get an 500 internal server error but if i uncomment the line in controller -- $this->load->model("user_model"); then the view page loads,...cant figure out whats happening...plz help..

Upvotes: 0

Views: 322

Answers (1)

Kevin Yan
Kevin Yan

Reputation: 1236

In CI config file 'application/config/config.php' find and set configuration item

$config['subclass_prefix'] = 'My_';

then the CI load_class function will load CI_Model and My_model when calling $ths->load->model('user_model') in your routine;

Upvotes: 2

Related Questions