1
votes

Obtention d'erreur Appel à la méthode non définie CourseModel :: deletecour () dans Codeigniter?

Bonjour les développeurs, je reçois une erreur mais je ne sais pas pourquoi? Tout est correct, je pense. Je fais juste une simple suppression dans codeigniter en utilisant id. Vérifiez simplement mon code.

Ceci est mon contrôleur.

class CourseModel extends CI_Model 
{
    public function __construct()
    {
         parent::__construct();          
    }
    public function deletecour($elete)
    {
        $this->db->where($elete['where']);
        return $this->db->delete($elete['table']);
     }  
   public function fetchCourseByParentID($id)
    {

    $this->db->select('course_name, image, sort_order, parent_id, 
    date_added, status');
    $this->db->from('ls_courses');
    $this->db->where('id = ' . $id);
    $query = $this->db->get();

    if(!empty($query->result_array()))
    {
        return $query->result_array();
    }
    else
    {
        return $this->db->error();
    }
}
} 

Ceci est la fonction Model.

public function deletecourse(){

        $id = $this->uri->segment(4);
        $elete = array(
            'table'=>'ls_courses',
            'where'=>array('id'=>$id)
        );
        $result=$this->coursemodel->deletecour($elete);
        if($result){
                $this->session->set_flashdata('success', 'Successfully deleted.');
        }
        else{
             $this->session->set_flashdata('warning', 'Unable to delete data.Please try again.');
        }
        redirect(base_url().'admin/course/index/');
    }


11 commentaires

désolé mon frère, c'est $ elete.


Il vient de mon contrôleur après avoir obtenu l'identifiant de uri. Je crée un tableau de $ elete.


avez-vous chargé CourseModel


Oui, en chargement automatique, j'ai fait ceci $ autoload ['model'] = array ('admin / coursemodel');


méthode incorrecte pour le module de chargement. à droite est $ autoload ['model'] = array ('coursemodel');


Mais une autre fonction de mon modèle fonctionne bien, alors comment pouvez-vous dire qu'elle est incorrecte.


Avez-vous d'autres fonctions dans ce modèle?


Frère danois Ali j'ai ajouté une autre fonction que j'utilise même sur l'ID. Cette fonction lorsque j'appelle depuis mon contrôleur fonctionne correctement.


avant d'essayer d'appeler votre méthode deletecour - essayez de sortir le nom de la classe - var_dump (get_class ($ this-> coursemodel)); et postez ce qu'il y a dedans - Je soupçonne que vous écrasez votre propre variable d'une manière ou d'une autre - à côté du fait que vous ne vous en tenez pas à la convention comment créer un modèle (d'ailleurs, regardez de plus près ici codeigniter.com/userguide3/general/... )


1- dans Codeigniter Les noms de classes doivent commencer par une lettre majuscule . codeigniter.com/userguide3/general/controllers.html 2- Nommez votre modèle nom de fichier également en mode majuscule commençant .


une autre chose est que vous pouvez directement passer le $ id en tant que paramètre de fonction. n'utilisez pas $ this-> uri-> segment (4)! car il charge une bibliothèque et y appelle une méthode. passez simplement votre identifiant en tant que paramètres de fonction.


3 Réponses :


0
votes

à votre modèle ... le nom de votre classe est le cas du chameau .. dans la documentation de codeigniter .. j'ai lu quelque part pour utiliser le trait de soulignement pour nommer les classes avec le premier plus tard en majuscule ... changez le nom de votre modèle de CourseModel en Course_model et essayez ...


2 commentaires

Ce n’est pas la raison.


Frère Manish ansari toutes les fonctions de mon modèle fonctionnent bien lorsque j'appelle les fonctions. Mais malheureusement, pourquoi cela ne fonctionne pas, je ne sais pas. Tout est correct. Je l'ai vérifié de plusieurs manières.



0
votes

Je ne sais pas pourquoi cela se produit ... mais essayez d'obtenir toutes les méthodes disponibles dans votre classe ... pour que vous puissiez trouver cela ... pourquoi vous ne pouvez pas appeler votre méthode au model ...

obtenir toutes les méthodes disponibles dans votre modèle

class CourseModel extends CI_Model 
{
public function __construct()
    {
         parent::__construct();          
         var_dump(get_class_methods($this));
         EXIT;
    }
}


0 commentaires

1
votes

Bonjour les gars tout d'abord merci car vous avez tous répondu très fréquemment à ma question. J'ai trouvé le problème de mon code. Dans mon autoload.php j'avais réussi le

$ autoload ['model'] = array ('coursemodel', 'admin / coursemodel');

Ce sont deux modèles différents, mais un pour le site Web et le deuxième pour le côté administrateur. Alors quand j'appelais le nom du modèle. Le problème est ici avec le nom de mon modèle qui était en conflit ou vous pouvez dire que le modèle extérieur appelait ce qui n'est pas pour l'administrateur et il n'y avait aucune méthode nommée telle que deletecour ($ elete).

Donc, c'est pourquoi l'erreur arrivait. Merci pour vos réponses et désolé d'avoir perdu votre temps pour cette stupide erreur.

$ this-> coursemodel-> deletecour ($ elete);


0 commentaires