XHTML.net

Technology talks by Loïc d’Anterroches

News, articles, PHP, scripts, XHTML/CSS, …

  1. Home
  2. PHP: Hypertext Preprocessor
  3. Pluf - Framework en PHP5

Les migrations dans Pluf, c'est génial

The 2008-04-29 at 09:59 by Loïc d'Anterroches filed under Pluf - Framework en PHP5.

Pour mon application de gestion de conférences, j’utilise Pluf (oui, les sites ont tous les deux un design ultra léger) et comme je modifie et j’ajoute de nouvelles fonctionnalités régulièrement, je me retrouve aussi régulièrement à devoir modifier les tables de ma base de données. Pour faire cela facilement, j’utilises les migrations de Pluf. C’est tout simple. Par exemple, ici j’ajoute la table d’un nouveau modèle CM_Track et je modifie celle de CM_Session quand je fais l’upgrade de la version 8 à la version 9, dans le downgrade, j’enlève la table et la colonne.

function CM_Migrations_9AddTracks_up($params=null)
{
   $db = Pluf::db();
   $db->begin(); // Start a transaction
   try {
       $track = new CM_Track();
       $schema = new Pluf_DB_Schema($db);
       $schema->model = $track;
       $schema->createTables();
       $session = new CM_Session();
       $table = $session->getSqlTable();
       $db->execute('ALTER TABLE '.$table.' ADD COLUMN track INTEGER NOT NULL '
                    .'CONSTRAINT '.$table.'_track_fkey '
                    .'REFERENCES '.$track->getSqlTable().' (id) MATCH SIMPLE '
                    .'ON UPDATE NO ACTION ON DELETE NO ACTION');
   } catch (Exception $e) {
       $db->rollback();
       throw $e;
   }
   $db->commit(); 
}

function CM_Migrations_9AddTracks_down($params=null)
{
   $db = Pluf::db();
   $db->begin(); // Start a transaction
   try {
       // Update the abstract and review tables
       $session = new CM_Session();
       $table = $session->getSqlTable();
       $db->execute('ALTER TABLE '.$table.' DROP COLUMN track');
       $schema = new Pluf_DB_Schema($db);
       $schema->model = new CM_Track();
       $schema->dropTables();
   } catch (Exception $e) {
       $db->rollback();
       throw $e;
   }
   $db->commit(); 
}

Les migrations de Pluf inspirées de Ruby on Rails permettent de facilement passer d’une version de la base de données à une autre sans se compliquer la vie, on peut facilement revenir en arrière et donc on peut facilement faire des tests. Si vous utilisez un framework x ou y, regardez ce qu’il propose pour vous simplifier la vie de développeur.

Comments from readers

Voice your ideas

It is painless and I try not to kill electrons in the process.


Your email is required but will not be shared nor displayed.


Do you think your comment will force me to write even better stuff next time? If so, you simply rock.


Logo of Plume CMS