2010-10-25 6 views

Répondre

2

Oui, c'est possible.

Je le fais tout le temps, si les données ne sont pas de la poste, je peux l'envoyer au modèle.

$this->load->model('some_model'); 
$this->some_model->some_function($var); 

Quelles données voulez-vous envoyer au modèle? Cela aidera à décider si c'est une mauvaise pratique.

1

Bien sûr, c'est possible! Comme Kieran l'a montré, vous pouvez simplement écrire des fonctions dans votre classe de modèle qui accepte les paramètres. N'oubliez pas que votre contrôleur doit d'abord analyser/valider ces paramètres, aucune validation supplémentaire ne doit être incluse dans votre modèle. Votre modèle doit être strictement utilisé pour écrire et lire à partir de la base de données. Par conséquent, en règle générale, vous ne devez transmettre que des arguments contenant des données réelles à stocker ou à utiliser dans vos requêtes.

J'écris habituellement différentes fonctions pour différents cas de WHERE. Par exemple:

select($id){} 
select_by_name($name){} 
... 

Cela permet de garder votre modèle compréhensible. La seule exception que je fais est dans le cas de limiter votre résultat. Dans tous mes modèles, j'ai sur la fonction de sélectionner tous les enregistrements, avec une option pour passer deux des variables à des fins de Pagination:

select_all($start=null,$limit=null){ 
    $qry = "SELECT * FROM ..."; 
    if($start != null) $qry .= " LIMIT ?,?"; 
    return $this->db->query($qry,func_get_args()); 
} 
+0

On peut se demander si votre modèle devrait également avoir la validation d'entrée ou non, alors n » Je publie cela comme un fait. Une architecture en couches solide est validée à tous les niveaux. Comme on ne peut pas appeler directement une méthode Modèle en dehors de CI, il est tolérable de ne pas répéter la validation dans un Modèle, bien que la vérification des entrées pour les requêtes s'applique toujours. – Ferdy

Questions connexes