Avant de commencer, il faut créer une base de données puis configurer le fichier .env
qui est à la racine du projet afin d'indiquer les accès à la base de données.
Saisissez les informations (nom de la base, nom utilisateur, mot de passe) dans ce fichier puis enregistrez.
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=root DB_PASSWORD=
Le DB_HOST peut être 127.0.0.1
ou localhost
Documentation ⇒ https://laravel.com/docs/8.x/migrations
Les migrations sont comme un contrôle de version pour votre base de données, permettant à votre équipe de définir et de partager la définition du schéma de la base de données de l'application. Si vous avez déjà dû demander à un coéquipier d'ajouter manuellement une colonne à son schéma de base de données local après avoir transféré vos modifications depuis le contrôle de la source, vous avez été confronté au problème que les migrations de bases de données permettent de résoudre.
php artisan make:migration create_images_table
/database/migrations
Le nom du fichier aura la date en préfixe
Exemple ⇒ 20200810024705createimagestable.php
public function up() { Schema::create('images', function (Blueprint $table) { $table->id(); $table->timestamps(); }); }
Créer une nouvelle migration, par exemple pour ajouter une colonne category à la table images qui existe déjà.
php artisan make:migration update_images_table
puis dans la méthode up() on ajoute
public function up() { Schema::table('images', function (Blueprint $table) { $table->string('category')->after('id'); }); }
La méthode down() est exécutée quand on fait un rollback
public function down() { Schema::table('posts', function (Blueprint $table) { $table->dropColumn('category'); }); }
php artisan migrate
php artisan migrate:rollback
php artisan migrate:reset
php artisan migrate:refresh
Quelques exemples:
$table->id(); // Crée un champ id de type bigInteger et non signé auto-incrément (clé primaire) $table->integer('location_id')->unsigned()->index(); // Entier non signé (index) $table->string('name', 100); // VARCHAR de 100 caractères $table->boolean('alert')->unsigned()->default(0); Boolean false par défaut $table->integer ('clicks')->unsigned()->default(0); Entier non signé avec 0 par défaut $table->decimal('amount', 8, 2); // Décimal, total de 8 chiffres et 2 chiffres après la virgule
Si vous avez ce genre d'erreur lors d'une migration
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))
Modifier le fichier /config/database.php
'mysql' => [ ... 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', ... ]