2017-02-22 5 views
1

Was ich versuche auf der Oberfläche zu tun scheint einfach, grundlegende OOP PHP, aber ich kann es einfach nicht funktionieren. Ich habe eine Controller-Klasse, die ein Modell fordert, dass Modell ein anderes Modell von mir erstreckt, aber es wirft einen Fehler sagen, es nicht finden kann:Erweiterte Modelle in Codeigniter 3

Controller (Welcome.php):

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

public function index() 
{ 
    $this->users_model->getAll(); 
} 

Benutzer Model (User_model.php):

class Users_model extends Base_model 
{ 

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

} 

Basismodell (Base_model.php):

class Base_model extends CI_Model 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->database(); 
    } 

    public function getAll($table) 
    { 
     $query = $this->db->query('Query here'); 
     return $query; 
    } 
} 

Diese gi Ves mir der Fehler Fatal error: Class 'base_model' not found in /ci/application/models/Users_model.php on line 3

Antwort

1

Speichern Sie Ihre Base_model in application/core als Base_model.php mit folgendem Code benannt.

class Base_model extends CI_Model 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->database(); 
    } 

    public function getAll($table=FALSE) 
    { 
     $query = $this->db->query('Query here'); 
     return $query; 
    } 
} 

Speichern User_model in application/models genannt als User_model.php folgenden Code mit

class User_model extends Base_model 
{ 

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

} 

Dann einen Controller machen Welcome.php in appliation/controllers haben folgenden Code mit ausziehbarem CI_Controller

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

public function index() 
{ 
    $data = $this->user_model->getAll(); //need a variable to hold return data 
} 
0

Sie müssen nur die lokalisieren Base_model in deinem Users_model wie unten stehender Code und Sie können einfach auf die Funktionen des Basismodells zugreifen.

require('application/models/base_model.php'); 

class User_model extends Base_model 
{ 
    function __construct() 
    { 
     parent::__construct(); 
    } 
}