Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
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 :
$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
Humm faudrait le code de ton traitement sinon moi je traite les fetchall de cette façon :
$var = .... ->fetchall($query); foreach ($var as $personne) : echo $personne->nom; endforeach;
Sinon si tu veux un row regarde fetchRow dans la doc
Hors ligne
$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
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.
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