====== Migrations ====== ===== Installation du plugin (CakePHP 3.7.2) ===== Le plugin Migrations est déjà installé (et activé dans la classe src/Application.php), si ce n'est pas le cas, faire ce qui suit : Depuis le dossier du projet, **en tant qu'utilisateur non-root** : php composer.phar require cakephp/migrations "@stable" Cela doit mettre à jour la classe **src/Application.php** : ajout de la ligne **$this->addPlugin('Migrations');** ===== Écrire une migration soi-même ===== Exemple, pour créer une nouvelle table **pantalons**, nommer la migration **config/Migrations/yyyymmddhhmmss_CreatePantalons.php** : table('pantalons'); $table ->addColumn('couleur', 'string', [ 'default' => 'noir', 'limit' => '255', 'null' => 'false']) ->addColumn('taille', 'integer', [ 'default' => 0, 'null' => 'false']) ->create(); } } ===== Générer une migration par la console ===== En ligne de commande, depuis le dossier du projet. * Le nom de la commande est **Create** suivi du nom de la table * Pour créer une table **Articles**, utiliser la commande **CreateArticles** * Le nom de la table doit être **au pluriel** * Lister tous les noms de champ avec leur type à la suite. * Exemple : ****:**** * S'il l'on veut un index sur ce champ, ajouter **:index à la fin** * Exemple : **id_produit**:**integer**:**index** * Le champ **id** est créé automatiquement, pas besoin de le spécifier * Pour les champs **created** et **modified**, pas besoin de spécifier le type, car ce sont des champs standards de CakePHP donc il sait déjà comment les créer. sudo bin/cake bake migration CreateArticles nom:string quantite:integer prix:float Cela crée un fichier **.php** dans le dossier **/config/Migrations**. ===== Afficher le statut des migrations ===== On peut à tout moment voir le status des différentes migrations, si elles ont été appliquées ou pas. Se placer à la racine du projet. Sous Linux : sudo bin/cake migrations status Sous Windows : bin\cake migrations status ===== Appliquer la(les) migration(s) créée(s) ===== Une fois qu'une ou plusieurs migrations ont été créées, on les applique dans la base de données en tapant cette commande : sudo bin/cake migrations migrate