Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 18-03-2010 15:55:44

lefafa
Membre
Date d'inscription: 03-03-2010
Messages: 13

[Résolu] requêtes SQL imbriquées avec NOT IN

bonjour,
j'effectue dans mon modèle une requête contenant une sous-requête.
N'ayant pas réussi à utiliser Zend_Db_Select pour la mettre en forme, je l'utilise de manière brute :

Code:

$query = 
"SELECT no_personne, nom
FROM personne
WHERE no_personne
NOT IN (SELECT DISTINCT no_personne FROM implication WHERE no_programme=$id)
ORDER BY nom"
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

Pour récupérer les résultats j'effectue un fetchAll($query). Le problème est que je récupère un simple tableau en sortie et non un tableau objet de type Zend_Db_Table_Rowset comme lorsque j'utilise Zend_Db_Select.
Du coup je ne peux pas traiter les résultats comme un objet ($personne->nom).

Quelqu'un aurait-il une solution ?

Dernière modification par lefafa (22-03-2010 10:51:03)

Hors ligne

 

#2 19-03-2010 05:19:25

iop974
Membre
Date d'inscription: 27-02-2009
Messages: 72

Re: [Résolu] requêtes SQL imbriquées avec NOT IN

Humm faudrait le code de ton traitement sinon moi je traite les fetchall de cette façon :

Code:

$var = .... ->fetchall($query);
foreach ($var as $personne) :
echo $personne->nom;
endforeach;
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

Sinon si tu veux un row regarde fetchRow dans la doc

Hors ligne

 

#3 19-03-2010 07:04:39

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: [Résolu] requêtes SQL imbriquées avec NOT IN

Code:

$s = $db->select()
->......
->where('no_personne NOT IN (' . new Zend_Db_Expr($db->select()
   ->from.....) .')');
$stmt = $db->prepare($s);
$stmt->setFetchMode(Zend_Db::FETCH_OBJ);
....
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

il me semble que setFetchMode peut être utilisé directement sur la connexion auquel cas c'est toutes les requêtes qui sont en mode objet
(du coup les requêtes de Zend_Auth le sont aussi est ne marche pas (c'était le cas en V1.0)

A+JYT

Hors ligne

 

#4 22-03-2010 10:46:03

lefafa
Membre
Date d'inscription: 03-03-2010
Messages: 13

Re: [Résolu] requêtes SQL imbriquées avec NOT IN

merci pour vos réponses
j'ai finalement réussi à utiliser Zend_Db_Select pour écrire ma requête.
Du coup plus de problème en sortie pour récupérer un objet.

Code:

function getNotPgrmPers($id)
{
$ss_req = $this->select()->from('implication', 'no_personne')->where('no_programme = ?', $id);

$select = $this->select();
$select->from('personne', array('no_personne', 'prenom', 'nom'))
       ->where('no_personne NOT IN (?)', ($ss_req))
       ->setIntegrityCheck(false);
            
$rows = $this->fetchAll($select);

return $rows;
}
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

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