====== 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