Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 07-02-2009 14:53:00

Kaimite
Membre
Lieu: Marseille
Date d'inscription: 16-06-2008
Messages: 144
Site web

[Résolu] [Zend_Db] [ZF 1.7.3] Requete dépendantes

Bonjour,

Je suis en train de bosser sur un site de voitures d'occas. Je souhaite faire une requête pour récupérer toutes les marques dont j'ai des 4x4 en stock.

Pour l'instant j'ai mis en place la requête suivante qui fonctionne :

Dans le model Vehicules.php

Code:

$select = $this -> select()
    -> setIntegrityCheck(false)
    -> from (array('v' => $this -> _name), 'DISTINCT(`code_marque`)')
    -> join(array('m' => 'marques'), 'v.`code_marque` = m.`id_marque`', array('nom'))
    -> where("code_carroserie = '4x4');

Est-ce la bonne méthode et auriez-vous fait différemment ?

Merci pour vos lumières smile

Cordialement,
Kaimite

Dernière modification par Kaimite (15-03-2009 19:00:45)

Hors ligne

 

#2 15-03-2009 18:36:21

Nico_bzh
Nouveau membre
Date d'inscription: 15-03-2009
Messages: 2

Re: [Résolu] [Zend_Db] [ZF 1.7.3] Requete dépendantes

J'ai exactement le même problème...
Lorsque je mets le array() à vide pour le 3ème argument de join, alors la requête s'exécute sans message d'erreur.

-> join(array('m' => 'marques'), 'v.`code_marque` = m.`id_marque`', array('nom'))

en revanche, si je veux récupérer une colonne en particulier, j'ai le message d'erreur...

Merci pour vos lumières (bis)
Nico_bzh

Hors ligne

 

#3 15-03-2009 18:46:48

Nico_bzh
Nouveau membre
Date d'inscription: 15-03-2009
Messages: 2

Re: [Résolu] [Zend_Db] [ZF 1.7.3] Requete dépendantes

En cherchant dans le forum, j'ai trouvé l'astuce !!
Il faut utiliser le select = $select->setIntegrityCheck(false) ;

Du coup les jointures n'étaient pas autorisées. Il faut le savoir ce truc...

Hors ligne

 

#4 15-03-2009 19:00:23

Kaimite
Membre
Lieu: Marseille
Date d'inscription: 16-06-2008
Messages: 144
Site web

Re: [Résolu] [Zend_Db] [ZF 1.7.3] Requete dépendantes

Salut et merci pour la réponse.

Ce n'est pas un problème de jointure autorisée ou non, c'est surtout d'autoriser de mélanger dans un Row des infos venant des deux tables.

Tu peux, avec un objet Zend_Db_Table_Row_Abstract, modifier son contenu et utiliser la méthode save() pour faire une mise a jour dans la base, par exemple :

Code:

//--> Je récupère l'enregistrement de l'ID 35
$personne = $model -> find(35) -> current();

$personne -> nom = "un nouveau nom"; 
$personne -> save();

Ici le save() va enregistrer dans la bdd le nouveau nom.

Si, via une jointure, mon Row contient des données venant de plusieurs table, laquelle mettre à jour si j'utilise cette méthode save() ?

Donc par défaut Zend ne renvoi que les champ du model qui exécute la requête.
Avec $select->setIntegrityCheck(false) ; il te renvoi toutes les infos mais certaines méthodes ne sont plus accessibles.

C'est en tout cas ce que j'ai compris smile

Cordialement,
Kaimite

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