Archive for 25th septembre 2008

Incrémenter un champ

25/09/2008  |  Publié dans cakephp

Suite à une question à laquelle j’avais répondu sur le Google Group français consacré à CakePHP, je me suis dit que j’allais ajouter à mon app_model.php la méthode suivante :

  1. <?php
  2. // dans {app}/app_model.php
  3.         /**
  4.          * incrémente d’un le champ $field de l’enregistrement de clef primaire $id
  5.          *
  6.          * @var int id clef primaire de l’enregistrement dont on veut incrémenter un champ
  7.          * @var string field champ du modèle à incrémenter
  8.          * @var int value valeur de l’incrément, par défaut 1
  9.          * @return bool
  10.          * @author Guillaume
  11.          **/
  12.         function incField($id = null, $field = null, $value = 1) {
  13.                 if(!empty($field) && !empty($id)) {  
  14.                  return $this->updateAll(array($this->alias.‘.’.$field => $value.‘ + ‘.$this->alias.‘.’.$field),  
  15.                                         array($this->alias.‘.’.$this->primaryKey => $id));  
  16.             }
  17.                 return false;
  18.         }
  19. ?>

On l’utilise ainsi simplement dans, par exemple, une méthode view, pour incrémenter un compteur à chaque visualisation d’un contenu, et ce dans n’importe quel modèle :

  1. function view($id = null) {
  2.                 if (!$id) {
  3.                         $this->flash(__(‘Invalid Link’, true), array(‘action’=>‘index’));
  4.                 }
  5.                 $this->Link->incField($id, ‘hits’);
  6.                 $this->set(‘link’, $this->Link->read(null, $id));
  7.         }

Archives

Liens au pif

  • Le blog de Pierre
  • Chez Trân
  • Google Group CakePHP Fr
  • Web Development 2
  • blogcatalog
  • Formation CakePHP
  • pictures of the north country
  • Julien Bourgeois
  • Yahoo Pipe des sites CakePHP FR
  • mes photos
  • snook.ca
  • Communauté française CakePHP
  • Cakebaker
  • Debuggable
  • photos de bubu
  • Derniers commentaires

    • Guillaume: Merci pour cette précision, Pierre, je vais aller voir ça.
    • Pierre Martin: Bonjour Guillaume, et merci encore une fois pourle lien vers mon article ! Juste...
    • Guillaume: De loin, on ne voyait pas très bien :)
    • Gabriiiel: Roy nous a remis un trophée… :D
    • Pierre MARTIN: Il y a aussi cet article de teknoid contenant un lien vers un plugin de recherche...
  • Derniers trackbacks