Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
J'ai un problème pour transcrire une requête SQL en utilisant Zend_Db_Select :
Voici la requête (qui fonctionne) :
[lang=sql]SELECT * FROM Repondants,action WHERE action.id_rep='$idrep' AND Repondants.IDS=$idsurvey AND action.id_rep=Repondants.id_rep AND action.Date_Emission='$date_emission'
Voici comment je la traduit en utilisant Zend_Db_Select :
[lang=php]$filtre2 = "action.id_rep = ". $idrep . " AND repondants.IDS = " . $idsurvey . " AND action.id_rep = repondants.id_rep AND action.Date_Emission = " . $date_emission ;
$select = $db->select()
->from('repondants')
->from('action')
->where($filtre2);
$action_rowset=$db->fetchall($select->query());
$action_rowcount= count($action_rowset);Malheureusement, cela ne fonctionne pas, et voici le message d'erreur :
Catchable fatal error: Object of class Zend_Db_Statement_Pdo could not be converted to string in C:\Zend\ZendServer\share\ZendFramework\library\Zend\Db\Statement.php on line 204
Je ne trouve rien de concluant sur internet...
Merci d'avance de votre précieuse aide
Dernière modification par niusha (13-05-2011 15:21:47)
Hors ligne
Bonjour,
Je pense qu'un petit tour sur la doc serait le bienvenu : http://framework.zend.com/manual/fr/zend.db.select.html
Je ne rentrerai pas dans le détail, mais voici ce à quoi pourrai ressembler la requête.
Pensez à utiliser les jointures, cela rendra votre code plus lisible.
$table = $this->getDbTable();
$select = $table ->select()
->from(.....)
->joinLeft(...)
->joinLeft(...)
->where("action.id_rep=$idrep")
->where("Repondants.IDS=$idsurvey")
;
return $table->fetchAll($select)->toArray();et pour visualiser la requête :
echo $select->__toString();
En espérant que cela vous donne de bonnes pistes.
Dernière modification par _Fuse_ (13-05-2011 12:05:25)
Hors ligne
Bonjour et merci pour votre réponse.
J'ai résolu mon problème, voici la version corrigée de mon premier post qui fonctionne :
[lang=php]
$filtre2 = "action.id_rep = ". $idrep . " AND repondants.IDS = " . $idsurvey . " AND action.id_rep = repondants.id_rep AND action.Date_Emission = '" . $date_emission . "'";
$select = $db->select()
->from('repondants')
->from('action')
->where($filtre2);
$action_rowset=$select->query()->fetchAll();
$action_rowcount= count($action_rowset);Erreur dans mon filtre, il manquait les ' ' autour de ma variable $date_emission qui est attendue en VARCHAR par la base de données
Erreur : ne pas utiliser $action_rowset=$db->fetchall($select->query()); mais comme je l'ai fait ci-dessus.
Hors ligne