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