Laravel
Laravel 11 & 10 • Chapitre 2 : Base de Données

Manipuler les Données avec Eloquent : Le Guide CRUD

Maîtrisez les 4 opérations fondamentales (Create, Read, Update, Delete) grâce à la syntaxe élégante et expressive d'Eloquent. Écrivez du code fluide, protégé nativement contre les injections SQL.

➕
Create (Insertion)

Insérez en une ligne avec Product::create([...]) ou instanciez puis appelez $product->save().

🔍
Read (Lecture & Filtres)

Recherche avec findOrFail(), conditions where(), tri latest() et pagination fluide paginate(15).

✏️
Update (Mise à jour)

Mettez à jour les colonnes modifiées via $product->update([...]) avec détection automatique des attributs sales (dirty).

🗑️
Delete & SoftDeletes

Suppression physique avec delete() ou temporaire dans une corbeille avec le trait SoftDeletes.

Exemples Concrets CRUD Eloquent (Laravel 10 / 11)
use AppModelsProduct;

// 1. CREATE : Insertion d'un nouvel enregistrement
$product = Product::create([
    'name'        => 'Clavier Mécanique RGB',
    'slug'        => 'clavier-mecanique-rgb',
    'price'       => 89.90,
    'category_id' => 1,
    'is_active'   => true,
]);

// 2. READ : Recherches & Chaînage de requêtes fluides
// Récupérer un produit spécifique avec gestion 404 automatique :
$product = Product::findOrFail(42);

// Filtrer avec conditions multiples et pagination :
$articles = Product::where('is_active', true)
    ->where('price', '<=', 100)
    ->latest()
    ->paginate(12);

// 3. UPDATE : Mise à jour ciblée
$product = Product::findOrFail(42);
$product->update([
    'price' => 79.90, // Le produit passe en solde
    'stock' => 50,
]);

// 4. DELETE : Suppression sécurisée
$product = Product::findOrFail(42);
$product->delete();

// Ou suppression directe par identifiant(s) :
Product::destroy([42, 43]);

Simulateur Studio Eloquent CRUD & Query Builder Interactif

Simulation Interactive CRUD

Exécutez des opérations CRUD en temps réel sur une collection d'articles et examinez instantanément le code PHP Eloquent ainsi que la requête SQL préparée (PDO) équivalente.

Product::create([ 'name' => 'Webcam 4K Ultra', 'category' => 'Informatique', 'price' => 79.90 ]);
INSERT INTO products (name, category, price, created_at, updated_at) VALUES (?, ?, ?, NOW(), NOW());
IDProduitCatégoriePrixStatut
#1Clavier Mécanique RGBInformatique89.90 €Actif
#2Souris Sans Fil ProAccessoires49.00 €Actif
#3Casque Audio StudioAudio129.50 €Actif
#4Enceinte Portable BassAudio39.99 €Actif
Méthodes de Requête Eloquent Indispensables
Méthode EloquentComportementExemple Pratique
findOrFail($id)Trouve par clé primaire ou lève automatiquement une exception HTTP 404.$post = Post::findOrFail($id);
firstOrCreate([...])Recherche le premier enregistrement correspondant ou le crée s'il n'existe pas.Tag::firstOrCreate(['name' => 'Laravel']);
paginate($n)Pagine automatiquement la requête et fournit les métadonnées de pagination.Product::latest()->paginate(15);
pluck('colonne')Extrait une collection de valeurs scalaires d'une colonne précise.User::pluck('email');
exists() / doesntExist()Vérifie la présence d'au moins un résultat avec une requête ultra-légère SELECT 1.if (Order::where('user_id', 1)->exists())