Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 12-05-2012 21:37:53

Age_of_Aquarius
Membre
Date d'inscription: 12-05-2012
Messages: 12

Zend_Db_Table et le datamapper

Bonjour à tous,

Je viens de commencer de developper ma première application avec ZF.
Parmis les tables de la base de données il y a :

- la table "Produit" : on y trouve tout les champs concerant un produit (Ex. Produit_ID, Produit_Date_Fabrication,  Responsable_ID, ...)
- la table "Responsable" : reliée à la première table par Responsable_ID (Clé étrangère dans la table "Produit").

J'ai créé pour chaque tables trois fichers (Classes). Par exemple pour la table "Produit" j'ai créé Application_Model_DbTable_Produits, Application_Model_Produits et Application_Model_ProduitMapper ; exactement comme indiqué dans le tutorial "Démarrez rapidement avec Zend Framework".

Dans le controlleur "ProduitController", l'action "infoAction($produitId)" devrait afficher des informations concernant le produit dont le numéro est passé comme argument. Ces information proviennent à la fois des deux tables via une requette SQL.

Ma question est : Puisque les résultats de la requette proviennent des deux tables, où je devrait mettre le code concerant la requette et le traitement ? Dans ProduitController (infoAction()), ResponsableController, Application_Model_ProduitMapper ou Application_Model_ResponsableMapper ?

Merci d'avance

Hors ligne

 

#2 12-05-2012 22:14:04

delorbe
Membre
Date d'inscription: 06-08-2010
Messages: 57

Re: Zend_Db_Table et le datamapper

Bonsoir,

C'est plus une question logique que technique apparemment smile
Je dirais, dans la table qui te semble être la table maîtresse, soit celle qui a ton Produit_ID en clé primaire...

Quand tu auras fini le tuto, tu pourras peut-être optimiser tout ça.

Hors ligne

 

#3 12-05-2012 23:26:12

Age_of_Aquarius
Membre
Date d'inscription: 12-05-2012
Messages: 12

Re: Zend_Db_Table et le datamapper

Merci delorbe pour ta réponse,

"C'est plus une question logique que technique apparemment"

Tout à fait d'accrod avec toi.

"Je dirais, dans la table qui te semble être la table maîtresse, soit celle qui a ton Produit_ID en clé primaire"

Dans ce cas il me reste deux choix :

- mettre le code de la requette SQL dans ProduitController (infoAction($produitId)) ;
ou bien
- le mettre dans "Application_Model_ProduitMapper".

Quel est l'endroit idéal où il faut mettre le code des requettes SQL ? (Les méthodes select(), from(), where(), fetchAll(), etc)

Merci

Hors ligne

 

#4 12-05-2012 23:44:34

delorbe
Membre
Date d'inscription: 06-08-2010
Messages: 57

Re: Zend_Db_Table et le datamapper

Selon moi, c'est dans ton Application_Model_ProduitMapper.

En effet, tu vas créer dedans une méthode du genre :

Code:

[lang=php]public function getProductInfos($productId = null){
    // On vérifie que l'id du produit est bien passé en paramètre
    if($productId){
        // Ici tu construis ta requête
        $r_result = $db->fetchRow($this->select()->where('')->...);
        
        // On renvoie false si pas de résultat
        return(sizeof($r_result) > 0 ? $r_result : false);
    }else{
        // Si pas d'id produit, on renvoie false
        return false
    }
}

Que tu pourras appeler de n'importe où (controller, plugin, etc...).
Si ta requête devait être modifiée un jour, tu n'auras qu'un seul endroit où la changer.

Hors ligne

 

#5 12-05-2012 23:50:31

Age_of_Aquarius
Membre
Date d'inscription: 12-05-2012
Messages: 12

Re: Zend_Db_Table et le datamapper

Merci delorbe,

Je vais donc mettre toutes mes requettes dans les Data Mapper Classes.

Merci beaucoup.

Hors ligne

 

#6 13-05-2012 00:02:29

delorbe
Membre
Date d'inscription: 06-08-2010
Messages: 57

Re: Zend_Db_Table et le datamapper

De rien smile

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages