2010-04-21 3 views
2

J'ai écrit un nouveau modèle pour mon infrastructure CodeIgniter. Je suis en train de charger la base de données à partir de la fonction constructeur, mais je reçois l'erreur suivante:CodeIgniter: Impossible de charger la base de données à partir d'un modèle

Severity: Notice 
Message: Undefined property: userdb::$load 
Filename: models/userdb.php 
Line Number: 7 

Fatal error: Call to a member function database() on a non-object in 
/var/www/abc/system/application/models/userdb.php on line 7 

Voici mon modèle:

<?php 

class userdb extends Model { 

    function __construct() { 

     $this->load->database(); 

    } 
?> 

ce que je fais mal ici?

Répondre

10

Vous oubliez d'appeler le constructeur parent en premier. Quelque chose comme:

<?php 

class userdb extends Model { 

function __construct() { 

    parent::Model(); 

    $this->load->database(); 

} 
?> 
+0

Mon mauvais, vérifié la mauvaise réponse. – thedp

+0

Appel à la méthode non définie CI_Model :: Model() dans application/models/Xyz_manager.php on line abc – muaaz

2

Je ne sais pas si cela poserait un problème ou non, mais les noms de modèle sont censés avoir la première lettre en majuscule. http://ellislab.com/codeigniter/user-guide/general/models.html Jens a également raison de dire que vous devez également appeler le constructeur parent.

+1

C'était aussi ma première pensée - Les conventions de nommage de CodeIgniter requièrent des noms de classes en majuscules. J'allais écrire cela jusqu'à ce que je remarque l'appel du constructeur manquant;) –

+0

'parent :: Model();' a fait l'affaire. Quant à la lettre majuscule dans le nom de classe/modèle, je déteste vraiment mais je l'ai changé pour éviter d'éventuelles erreurs. Merci de votre aide. – thedp

+1

Comment est-ce la meilleure réponse quand elle n'a même pas spécifié la bonne réponse? Jens ci-dessous a répondu correctement. –

Questions connexes