2011-01-10 5 views
3

Dites que je suis dans la fonction delete_user() dans le modèle utilisateur, et je veux qu'il utilise la fonction delete_comment() dans mon modèle de commentaire.Dans CodeIgniter, comment accéder à un modèle depuis un autre?

Je pouvais accéder directement aux tables de commentaires, ou charger et appeler l'autre modèle depuis mon contrôleur, mais pour que mon code reste aussi abstrait que possible, je veux pouvoir accéder à un modèle depuis un autre.

Est-ce possible avec CodeIgniter?

Répondre

4

Vous auriez besoin ceci:

class User_model extends Model 
{ 
    function get_something() 
    { 
     $CI =& get_instance(); 
     $CI->load->model('profile_model'); 
     return $CI->profile_model->get_another_thing(); 
    } 
} 
0

Vous pouvez simplement y accéder comme vous le pouvez dans un contrôleur étant donné qu'il est déjà chargé.

$this->some_other_model->method(); 
+0

Etes-vous sûr? Cela ne fonctionne pas pour moi. Déplacé le code de mon modèle au contrôleur, et cela a fonctionné. – MrGlass

+0

Qu'est-ce qui ne fonctionne pas spécifiquement? Si vous avez chargé les deux modèles, vous devriez pouvoir appeler votre méthode de suppression d'utilisateur, suivie de votre méthode de suppression de commentaire. Cela dit, je ne sais pas si c'est le bon design. Étant donné que lorsque vous supprimez un utilisateur, vous devez toujours supprimer vos commentaires, cela est probablement mieux dans votre modèle. Pouvez-vous poster votre code de modèle complet, pour supprimer des utilisateurs et supprimer des commentaires – diagonalbatman

+0

J'ai chargé le modèle de commentaire dans mon modèle d'utilisateur, juste avant d'essayer d'appeler la fonction. PHP ne semble pas avoir de problème avec le chargement du fichier, mais si j'essaie la fonction, ma page ne s'affiche pas. – MrGlass

0
function model_load_model($model_name) 
    { 
     $CI =& get_instance(); 
     $CI->load->model($model_name); 
     return $CI->$model_name; 
    } 
0

essayez de charger votre modèle comme celui-ci:

$this->load->model('comment_model'); 
$this->comment_model->delete_comment($userId); 
Questions connexes