Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Je suis en train de créer un agenda de groupe. Cet agenda contient plusieurs catégories (formations, personnel,...). Si on utilise la catégorie personnelle alors il y a un id_user pour savoir qui est concerné. Maintenant j'aimerais créer une requête pour sortir toutes les données concernant un utilisateur, donc toutes les formations et tout ce qui concerne son agenda personnel.
Afin de trier les données personnelles, j'aimerais utiliser Case comme par exemple (mais cela ne fonctionne pas) :
->where('CASE WHEN (agendas.category = "personnel") THEN agendas.id_user = "'.$id_user.'"')
Pour le moment j'utilise un if dans ma vue pour trier ces données mais je ne trouve pas que c'est très propre et suis presque sûr qu'il y a moyen de mieux faire, vous auriez par hasard une idée ?
Dernière modification par ubini (16-03-2008 18:15:49)
Hors ligne
Salut ubini,
Je crois que tu confonds 2 trucs :
- switch / case : c'est du PHP
- les paramètre de where, c'est du SQL
si tu veux utiliser switch case, c'est au niveau PHP que tu dois jouer. Ca pourrait donner :
switch ($category) { case "personnel": $select->where("agendas.is_user=?",$id_user); break; case "toto": $select->where("xxx=?",$xxx); break; }
A+, Philippe
Hors ligne
bonjour,
il existe aussi une notion de "case then " dans le language sql ( mysql 5 le gère par exemple)
http://dev.mysql.com/doc/refman/5.0/en/ … tions.html
l'implémentation pdo ne prévoit pas cette éventualité, il faut passer par une requête avec $bd->query('requete') ou voir du côté de Zend_Db_Expr ()
bons tests :-)
Hors ligne
regarde le code de Zend_auth il créé une requête avec case
Hors ligne
Perso j'ai un cas d'exemple qui marche:
$select ->from(array('a'=>DB_TABLE_ADS),array( 'a.*', 'id'=>'a.id_ad', 'bookmark'=>'b.value', new Zend_Db_Expr('CASE a.fk_user WHEN '.$this->user->id_user.' THEN 1 ELSE 0 END AS myad') ))
Hors ligne
Youppie et merci beaucoup Mr.MoOx !
Hors ligne