Table des matières

Laravel

Configuration de l'accès à la base de données

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

Migrations

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.

Créer une migration

  php artisan make:migration create_images_table

Cela va créer un fichier de migration dans le dossier /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();
    });
}

Ajouter une colonne dans une table déjà créée

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');
    });
}

Supprimer une colonne

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');
    });
}

Démarrer la migration

php artisan migrate

Revenir à la migration précédente

php artisan migrate:rollback

Supprimer toutes les migrations

php artisan migrate:reset

Suprimer et refaire les migrations

php artisan migrate:refresh

Liste des commande pour créer les colonnes

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

https://laravel.com/docs/8.x/migrations#columns

Erreurs lors d'une migration

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',
  ...
]