IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Db PHP Discussion :

[Zend_Db] MVC: Une classe métier dans "Model"


Sujet :

Zend_Db PHP

Vue hybride

salmoucha [Zend_Db] MVC: Une classe... 03/04/2008, 12h38
yosraisi salut :D tu peux consulter... 03/04/2008, 13h56
Janitrix Salut, Tu peux faire ça... 03/04/2008, 17h41
salmoucha Merci beaucoup Janitrix pour... 03/04/2008, 21h49
Janitrix C'est très simple si vous... 03/04/2008, 21h54
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 127
    Par défaut [Zend_Db] MVC: Une classe métier dans "Model"
    Bonjour,

    Je crée un site web en utilisant Zend et le modèle MVC.
    Je veux utiliser des classes métier dans Model.
    Actuellement, je peux créer des classes à partir de la base de données.
    c'est à dire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    class User extends Zend_Db_Table
    {
        protected $_name = 'user';
    }
    NB: "user" c'est une table dans la base de données.

    Mon problème c'est :
    Je met tous mon code dans le contrôleur IndexControlleur: ajouterAction, supprimerAction,....
    Ce qui a rendu la page IndexControlleur.php très volumineuse. En plus, je copie les même requêtes dans chaque fonction.
    Alors, Je veux créer une classe métier contenant les fonctions d'ajout, de suppression, et de modifier. Et dans chaque fonction sa requête spécifique, pour diminuer la taille du contrôleur et pour qu'il ne permet que d'afficher les vues.
    Comment faire ça?
    Merci d'avance.

  2. #2
    Membre confirmé Avatar de yosraisi
    Inscrit en
    Février 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 136

  3. #3
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Salut,

    Tu peux faire ça très simplement. Un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    class Member extends Zend_Db_Table_Abstract
    	{
     
    		protected $_name = 'member';
       		protected $_primary = 'id';
     
                    public function getMemberById($id_member)
                    {
     
                        $db = $this->getAdapter();
     
       			$query = $db->select()
       						->from( array("m" => "member" )) 
       						->joinLeft( array("g" => "group"), "m.id_group = g.id" , array( "g.name as group_name, g.admin_blog, g.admin_forum, g.admin_folder, g.admin_guest, g.admin_member, g.admin_group" ) )				
       						->where( $db->quoteInto( "m.id = ?", $id ) );
     
       			return $db->fetchRow($query);
     
                        }
    }
    Bien sur, tu changes la requête en fonction du résultat souhaité.

    Bon courage.

  4. #4
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 127
    Par défaut
    Merci beaucoup Janitrix pour votre aide.
    Mais, s'il vous plais, comment je dois appeler cette fonction dans le "IndexController" ?

  5. #5
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    C'est très simple si vous connaissez la programmation orienté objet

    Dans votre fichier IndexController.php :
    $memberAdapter = new Member();
    $member = $memberAdapter->getMemberById(5);
    L'objet $member est du type stdClass, qui dispose de variables au nom des champs de la table. Par exemple, si dans la table member, vous avez un champ name, vous pouvez récupérer le nom du membre retourné par la fonction en faisant
    $name = $member->name;
    Bien sûr, tout cela est à adapter à votre code.

    Bon courage.

  6. #6
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 127
    Par défaut
    Merci beaucoup pour votre réponse.
    J'ai essayer de faire ça pas mal de fois mais j'ai pas arrivé.
    Excuse moi, je n'ai pas encore compris le principe.
    SVP, explique moi plus .

Discussions similaires

  1. winEvent dans une classe métier
    Par Niak74 dans le forum Qt
    Réponses: 0
    Dernier message: 25/02/2010, 10h53
  2. Réponses: 4
    Dernier message: 08/03/2006, 19h07
  3. Réponses: 4
    Dernier message: 08/11/2005, 15h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo