Modélisation : Création d’un Projet CRUD avec Laravel et MySQL

Sommaire

  1. Configuration Initiale
  2. Structure MVC de Laravel
  3. Routes et Navigation
  4. Gestion de la Base de Données
  5. Fonctionnalités CRUD
  6. Fonctionnalités Avancées
  7. Conclusion

1. Configuration Initiale

Pré-requis

Avant de commencer, assurez-vous d’avoir installé les outils suivants :

  • PHP (version ≥ 8.0) et Composer (gestionnaire de dépendances PHP).
  • Serveur local (LAMP, WAMP, Laragon ou XAMPP).
    • Laragon est recommandé pour sa simplicité et sa compatibilité avec Laravel.

Tester l’installation

Exécutez les commandes suivantes pour vérifier que tout est correctement installé :

bash

php -v composer -v

Création du Projet Laravel

  1. Créez un nouveau projet Laravel en exécutant :

    bash composer create-project laravel/laravel projet-laravel

  2. Configurez votre base de données dans le fichier .env généré :

    env DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=crud_laravel DB_USERNAME=root DB_PASSWORD=

  3. Lancez le serveur local Laravel :

    bash php artisan serve

    Accédez à votre projet dans un navigateur à l’adresse http://127.0.0.1:8000.

2. Structure MVC de Laravel

Laravel suit une architecture MVC (Modèle-Vue-Contrôleur) permettant de séparer la logique métier, la présentation et le contrôle.

Modèle (Model)

  1. Créez un modèle et une migration associés :

    bash php artisan make:model Produit -m

    Cela génère :

    • Un fichier modèle dans /app/Models/Produit.php.
    • Un fichier de migration dans /database/migrations/.
  2. Définissez les champs dans le fichier de migration :

    php Schema::create('produits', function (Blueprint $table) { $table->id(); $table->string('nom'); $table->text('description'); $table->decimal('prix', 8, 2); $table->integer('quantite'); $table->timestamps(); });

  3. Lancez les migrations pour créer la table :

    bash php artisan migrate

Vue (View)

  1. Créez les fichiers Blade suivants dans /resources/views/produits/ :
    • index.blade.php : Liste des produits.
    • create.blade.php : Formulaire de création.
    • edit.blade.php : Formulaire de modification.
    • show.blade.php : Détails d’un produit.
  2. Ajoutez un fichier de mise en page globale (layout.blade.php) dans /resources/views/ :

    html <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <title>@yield('title')</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"> </head> <body> <div class="container mt-4"> @yield('content') </div> </body> </html>

Contrôleur (Controller)

  1. Générez un contrôleur avec les méthodes CRUD préconfigurées : bash php artisan make:controller ProduitController --resource
  2. Cela crée un fichier dans /app/Http/Controllers/ProduitController.php avec les méthodes :
    • index(), create(), store(), edit(), update(), destroy().

3. Routes et Navigation

  1. Ajoutez une route ressource dans /routes/web.php :

    php use App\Http\Controllers\ProduitController; Route::resource('produits', ProduitController::class);

  2. Listez toutes les routes générées :

    bash php artisan route:list

4. Gestion de la Base de Données

Configuration

Assurez-vous que votre fichier .env est correctement configuré avec les informations de connexion à MySQL.

Migrations

Si vous ajoutez des champs supplémentaires, vous pouvez modifier les fichiers de migration et relancer la commande :

bash php artisan migrate:refresh

5. Fonctionnalités CRUD

Créer un Produit

  1. Dans ProduitController :
    • Méthode create() : php public function create() { return view('produits.create'); }
    • Méthode store() : php public function store(Request $request) { $validated = $request->validate([ 'nom' => 'required', 'description' => 'required', 'prix' => 'required|numeric', 'quantite' => 'required|integer', ]); Produit::create($validated); return redirect()->route('produits.index')->with('success', 'Produit ajouté avec succès!'); }
  2. Formulaire dans create.blade.php :

    html <form action="{{ route('produits.store') }}" method="POST"> @csrf <input type="text" name="nom" placeholder="Nom du produit" class="form-control mb-3"> <textarea name="description" placeholder="Description" class="form-control mb-3"></textarea> <input type="number" name="prix" placeholder="Prix" class="form-control mb-3"> <input type="number" name="quantite" placeholder="Quantité" class="form-control mb-3"> <button type="submit" class="btn btn-primary">Ajouter</button> </form>

Lire les Produits

  1. Dans index.blade.php, affichez les produits : html @foreach ($produits as $produit) <tr> <td>{{ $produit->nom }}</td> <td>{{ $produit->prix }}</td> </tr> @endforeach

Mettre à Jour un Produit

  1. Méthode edit() :

    php public function edit($id) { $produit = Produit::findOrFail($id); return view('produits.edit', compact('produit')); }

  2. Méthode update() :

    php public function update(Request $request, $id) { $validated = $request->validate([...]); Produit::whereId($id)->update($validated); return redirect()->route('produits.index')->with('success', 'Produit mis à jour avec succès!'); }

Supprimer un Produit

  1. Méthode destroy() : php public function destroy($id) { Produit::findOrFail($id)->delete(); return redirect()->route('produits.index')->with('success', 'Produit supprimé avec succès!'); }

6. Fonctionnalités Avancées

Messages de Validation et de Succès

Ajoutez dans vos vues :

php @if(session('success')) <div class="alert alert-success">{{ session('success') }}</div> @endif

Utilisation de Bootstrap

Appliquez des classes Bootstrap pour styliser vos formulaires, tables, et boutons.

Pagination

Ajoutez la pagination avec Eloquent :

php $produits = Produit::paginate(10);

Dans votre vue :

html {{ $produits->links() }}

7. Conclusion

Ce projet CRUD avec Laravel et MySQL couvre les bases de la gestion des données (CRUD) tout en respectant la structure MVC de Laravel. Vous pouvez étendre ce projet avec des fonctionnalités supplémentaires comme l’authentification, les filtres avancés ou l’exportation de données. Laravel offre de puissants outils pour construire rapidement des applications robustes et maintenables.

Bases : Construire un projet Laravel

La création d’un projet Laravel efficace nécessite une approche bien structurée pour organiser les données et gérer les fonctionnalités. Voici un...

Tuto : Laravel Ecommerce

Laravel 11 et Voyager forment un duo puissant pour développer rapidement des applications e-commerce robustes et personnalisables. Pourquoi : -...

Bases : Construire un projet Laravel

La création d’un projet Laravel efficace nécessite une approche bien structurée pour organiser les données et gérer les fonctionnalités. Voici un...

Tuto : Laravel Ecommerce

Laravel 11 et Voyager forment un duo puissant pour développer rapidement des applications e-commerce robustes et personnalisables. Pourquoi : -...