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"

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;

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);
....

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;
}

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