Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Depuis un moment je coince sur une requête Max dans une classe.
Je m'explique : j'ai une table en mysql content comme clé un id de format entier, non incrémenté (dans le but de garder un contrôle dessus). J'ai créé une classe relative à cette table. Le but est qu'il y ait des méthodes pour en manipuler les données. Et je coince sur la recherche de l'ID Max :
Voici le code de la classe
class Tavurnav extends Zend_Db_Table_Abstract { //protected $config= new Zend_Config_Ini('config.ini','dev'); protected $_name= 'Avurnav'; protected $_primary = 'numerotation_avurnav'; //protected $db = Zend_Db::factory($config->database); protected function datefrenus ($datefr) { if (!$datefr) return ""; list($jour, $mois, $annee) = split("/", $datefr); $dateus = trim($annee)."/".trim($mois)."/".trim($jour); return $dateus; } public function findByDate($date_emission) //controles à venir { if (!isset($date_emission)) { die ("Il faut renseigner une date émission"); } else { $select = $this->select() ->from ($this) -> where ('date_emission = ?', $date_emission); $toto = $this->fetchAll ($select); foreach ($toto as $avirad) { echo "voici les messages demandés : " .$avirad->message ."<br> ". "Référence : ". $avirad-> reference; } } } //fonction d'insertion sans controle pour le moment public function inserer ($data) { try{ $this->insert($data); return true; } catch (Zend_Db_Exception $e) { return false; } } // retourne le dernier numero avurnav public function dernierNumero () { $select = $this->select() ->from ($this, 'MAX(numerotation_avurnav)'); echo "requete : ".$select .'<br>'; $max= $this->fetchOne ($select); return $max; }
Lorsque je fais appel à la méthode dernierNumero(), je n'ai aucun retour. Le code s'arrête, sans retour d'erreur.
$table = new Tavurnav(); $last = $table->dernierNumero(); echo $last;
Je suppose qu'il y a une erreur, sinon cela marcherait. Merci de votre aide
Cordialement
Hors ligne
bonjour,
essaies d'utiliser Zend_Db_Expr pour contraindre select de Zend_Db de considerer MAX(numerotation_avurnav) comme une expression et non comme une colonne.
[lang=php] public function dernierNumero () { $select = $this->select() ->from ($this, new Zend_Db_Expr("max(numerotation_avurnav) ") ); echo "requete : ".$select .'<br>'; $max= $this->fetchOne ($select); return $max; }
Dernière modification par amiss (17-09-2012 11:14:38)
Hors ligne
En fait, j'ai modifié comme suit :
// retourne le dernier numero avurnav public function dernierNumero () { $select = $this->_db->select(); $select->from ("Avurnav", 'MAX(numerotation_avurnav)'); echo $select ; $max = $this->_db->fetchOne ($select); return $max; }
et j'ai à priori bien mon ID Max
Hors ligne