Migrations de bases de données en PHP : Guide complet des outils et bibliothèques

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Migrations de bases de données en PHP : outils modernes et pratiques



Les migrations de bases de données sont une partie essentielle du développement moderne en PHP. Elles permettent aux équipes de développeurs de synchroniser les modifications du schéma de la base de données, de suivre l'historique des changements et de les appliquer automatiquement dans différents environnements (environnement local, staging, production). Dans cet article, nous examinerons les principales bibliothèques et outils pour les migrations en PHP, leur installation, leur configuration et des exemples d'utilisation.



Que sont les migrations et pourquoi en a-t-on besoin ?



Une migration de base de données est un script qui décrit une modification du schéma : création d'une table, ajout/suppression de colonnes, d'index, de clés étrangères. Les migrations permettent de :

  • Versionner les modifications de la structure de la base de données avec le code de l'application.
  • Automatiser le déploiement sur de nouveaux serveurs.
  • Annuler les modifications si nécessaire.
  • Travailler en équipe sans conflits.


Bibliothèques populaires pour les migrations en PHP



1. Phinx (robmorgan/phinx)

Phinx est l'une des bibliothèques indépendantes les plus populaires pour les migrations. Elle n'est liée à aucun framework spécifique et prend en charge MySQL, PostgreSQL, SQLite, SQL Server.



Installation via Composer :

composer require robmorgan/phinx


Création du fichier de configuration phinx.yml :

paths:    migrations: '%%PHINX_CONFIG_DIR%%/db/migrations'    seeds: '%%PHINX_CONFIG_DIR%%/db/seeds'

environments: default_migration_table: phinxlog default_database: development development: adapter: mysql host: localhost name: myapp_db user: root pass: '' port: 3306 charset: utf8


Exemple de migration (création de la table users) :

<?php

use Phinx\\Migration\\AbstractMigration;

class CreateUsersTable extends AbstractMigration{ public function change() { $table = $this->table('users', ['id' => false, 'primary_key' => ['id']]); $table->addColumn('id', 'biginteger', ['identity' => true]) ->addColumn('username', 'string', ['limit' => 50]) ->addColumn('email', 'string', ['limit' => 100]) ->addColumn('created_at', 'datetime') ->addColumn('updated_at', 'datetime', ['null' => true]) ->addIndex(['email'], ['unique' => true]) ->create(); }}


Exécution des migrations :

vendor/bin/phinx migrate -e development


2. Doctrine Migrations (doctrine/migrations)

Doctrine Migrations fait partie de l'écosystème Doctrine ORM. Idéal pour les projets utilisant déjà Doctrine. Prend en charge tous les SGBD populaires.



Installation :

composer require doctrine/migrations


Configuration (migrations.php) :

<?phpreturn [    'table_storage' => [        'table_name' => 'doctrine_migration_versions',    ],    'migrations_paths' => [        'App\\Migrations' => './migrations',    ],    'all_or_nothing' => true,    'transactional' => true,    'check_database_platform' => true,];


Exemple de migration :

<?php

namespace App\\Migrations;

use Doctrine\\DBAL\\Schema\\Schema;use Doctrine\\Migrations\\AbstractMigration;

class Version20240101000000 extends AbstractMigration{ public function up(Schema $schema): void { $table = $schema->createTable('products'); $table->addColumn('id', 'integer', ['autoincrement' => true]); $table->addColumn('name', 'string', ['length' => 255]); $table->addColumn('price', 'decimal', ['precision' => 10, 'scale' => 2]); $table->se

Recommendations