Laravel – Accès à la base de données – Les Migrations

08 janvier 2018 - : MVC Laravel - : Pas de commentaire

Laravel – Accès à la base de données – Les Migrations

Maintenant que nous savons créer une route, il peut être nécessaire d’interagir avec une base de données (MySQL dans notre cas).

Avant d’entrer dans le vif du sujet, la notion de migrations est importante à aborder.

Les migrations

Une migration permet de créer et mettre à jour le schéma de notre base de données (sa structure). Il ne s’agit donc pas ici de gérer les données à proprement parler mais réellement de créer, modifier, supprimer… des tables, par exemple.

Configurer la base de données

La première étape sera de créer une base de données.

Une fois celle-ci créée, nous allons configurer Laravel pour qu’il connaisse les informations de connexion.

Nous allons ouvrir le fichier .env situé à la racine du dossier de Laravel et y modifier les lignes suivantes avec les informations correspondant à notre base de données.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
Fichier .env

Artisan

Laravel dispose d’un outil en ligne de commandes, appelé artisan, que nous utiliserons régulièrement.

Celui-ci peut être utilisé pour créer des migrations, mais également des modèles, des contrôleurs…

Installer la migration

Avant de pouvoir gérer notre base de données, il va falloir installer la migration. Ceci aura pour effet de créer une table « migrations » dans la base de données. Celle-ci contiendra l’historique des commandes exécutées.

Pour installer la migration, ouvrez une invite de commande et accédez au dossier contenant Laravel (ici c:\xampp\htdocs\monblog)

Puis exécutez la commande

php artisan migrate:install

La table « migrations » a été créée.

Toutes les actions sur le schéma de la base de données seront mémorisées dans cette table.

Créer la migration

Si nous souhaitons créer une table qui contiendra nos articles de blog, qui contiendra un id auto-incrémenté, un titre, un contenu et une date, nous allons exécuter une série d’actions qui débutera par la création de la migration elle-même.

php artisan make:migration create_blog_articles_table

Cette première commande va créer la migration qui nous permettra de créer la table « blog_articles » dans la base de données.

Si vous allez maintenant voir dans le dossier /database/migrations, vous y trouverez 3 fichiers dont l’un s’appelle « 2018_01_08_193955_create_blog_articles_table.php » (les chiffres sont différents selon la date de création)

Les deux autres fichiers serviront à créer une table d’utilisateurs (users) et une table permettant de gérer la réinitialisation des mots de passe (password_resets)

Nous allons nous intéresser au contenu du fichier que nous venons de créer

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateBlogArticlesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up() // Fonction qui va être exécutée pour créer la table
    {
		// Ici se trouvera le schéma de notre table (structure) pour sa création
	}

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down() // Fonction qui va être exécutée pour supprimer la table
    {
        // Ici nous gérerons la suppression de la table
    }
}
Langage : PHP

Nous allons donc devoir compléter les fonctions up et down qui serviront respectivement à créer et supprimer notre table.

Voici le fichier complet

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateBlogArticlesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('blog_articles', function(Blueprint $table) { // Nous demandons la création de la table 'blog_articles'
            $table->increments('id'); // Création d'un champ 'id' auto-incrémenté
            $table->string('titre', 255); // Création d'un champ texte 'titre' de 255 caractères
            $table->longText('contenu'); // Création d'un champ texte long 'contenu'
            $table->date('date_article'); // Création d'un champ 'date_article' de type date
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('blog_articles'); // Suppression de la table 'blog_articles'
    }
}

Exécuter les migrations

Une fois les différentes migrations créées sur le même modèle, nous allons les exécuter. Il est important de comprendre que TOUS les fichiers de migrations seront exécutés lors de la validation des commandes ci-dessous (en invite de commandes)

php artisan migrate # Cette commande permettra de créer les tables

php artisan migrate:rollback # Cette commande permettra de supprimer les tables

php artisan migrate:refresh # Cette commande permettra de supprimer les tables puis de les recréer

Commentaires

Pas encore de commentaire

Laisser un commentaire