Laravel
Models Migration Relation
Introduction,istallation Strucutre,model,migration Migration,Models,Relation
Les Relations
BelongsTo HasOne HasMany BelongsToMany HasManyThrough
Exemples des Relations
Relations:oneToMany,ManyToMany... Relations:Exemples
Exercices
Exercice 1 Exercice 2
Controllers Views Routes
Routes,Controller,Model,view CRUD: Etudiant CRUD: Car CRUD,Recherche: Book
Validation
Exemple :Projets
Api:Laravel +React
Middleware

Seeders & Factories

Authenfication
Layouts





Seeders

Seeders

les seeders sont des classes qui permettent de peupler la base de données avec des données de test ou de développement.

Exemple :Categorie

  Categorie(idCategorie,nom,description)
1.Création du seeder :
pour le modèle Categorie.
php artisan make:seeder CategoriesTableSeeder
Cela créera un fichier CategoriesTableSeeder.php dans le répertoire database/seeders.

database/seeders/CategoriesTableSeeder.php

<?php
namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class CategoriesTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        // Exemple d'insertion de données
        DB::table('categories')->insert([
            'nom' => 'Technologie',
            'description' => 'Catégorie pour les produits technologiques',
        ]);

        // Vous pouvez insérer plus de données ici
    }
}
2.Exécution du seeder :
php artisan db:seed --class=CategoriesTableSeeder

Générer des données aléatoires

<?phpnamespace Database\Seeders;

use Illuminate\Database\Seeder;
use App\Models\Categorie;
use Faker\Factory as Faker;

class CategoriesTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $faker = Faker::create();

        // Boucle pour générer plusieurs catégories
        for ($i = 0; $i < 5; $i++) {
            Categorie::create([
                'nom' => $faker->word,
                'description' => $faker->sentence,
            ]);
        }
    }
}
php artisan db:seed --class=CategoriesTableSeeder

Les méthode de faker

La bibliothèque Faker est utilisée pour générer des données factices réalistes dans les tests ou lors de la création de seeders dans Laravel. Voici quelques-unes des méthodes les plus couramment utilisées disponibles dans Faker :

  1. Texte :

    • sentence($nbWords = 6, $variableNbWords = true) : Génère une phrase aléatoire avec un nombre de mots spécifié.
    • paragraph($nbSentences = 3, $variableNbSentences = true) : Génère un paragraphe aléatoire avec un nombre de phrases spécifié.
    • text($maxNbChars = 200) : Génère un texte aléatoire avec un nombre maximum de caractères spécifié.
  2. Nombres :

    • randomNumber($nbDigits = NULL, $strict = false) : Génère un nombre aléatoire avec le nombre de chiffres spécifié.
    • randomDigit : Génère un chiffre aléatoire.
    • randomFloat($nbMaxDecimals = NULL, $min = 0, $max = NULL) : Génère un nombre à virgule flottante aléatoire.
    • numberBetween($min = 0, $max = 2147483647) : Génère un nombre aléatoire compris entre les bornes spécifiées.
  3. Dates et Heures :

    • dateTime($max = 'now', $timezone = null) : Génère une date et une heure aléatoire.
    • date($format = 'Y-m-d', $max = 'now') : Génère une date aléatoire.
    • time($format = 'H:i:s', $max = 'now') : Génère une heure aléatoire.
    • dateTimeBetween($startDate = '-30 years', $endDate = 'now', $timezone = null) : Génère une date et une heure aléatoire entre les dates spécifiées.
  4. Adresses :

    • address : Génère une adresse aléatoire.
    • city : Génère un nom de ville aléatoire.
    • country : Génère un nom de pays aléatoire.
    • postcode : Génère un code postal aléatoire.
  5. Personnes :

    • name($gender = null) : Génère un nom aléatoire.
    • firstName($gender = null) : Génère un prénom aléatoire.
    • lastName : Génère un nom de famille aléatoire.
    • title($gender = null) : Génère un titre aléatoire (M., Mme, Dr, etc.).
  6. Internet :

    • email : Génère une adresse email aléatoire.
    • url : Génère une URL aléatoire.
    • domainName : Génère un nom de domaine aléatoire.

Générer les données pour les Foreign key:belongsTo

Model Produit

<?php class Produit extends Model
{
    use HasFactory;
    protected $table="produits";
    protected $primaryKey="idProduit";
    protected $fillable=["nom","prix","qteStock","idCategorie"];

    protected function categorie()
    {
        return $this->belongsTo(Categorie::class,'idCategorie');
    }

Création du seeder

php artisan make:seeder ProduitsTableSeeder
<?php
namespace Database\Seeders;

use Illuminate\Database\Seeder;
use App\Models\Produit;
use App\Models\Categorie;
use Faker\Factory as Faker;

class ProduitsTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $faker = Faker::create();

        // Récupérer toutes les catégories depuis la base de données
        $categories = Categorie::all();

        // Boucle pour générer plusieurs produits
        for ($i = 0; $i < 10; $i++) {
            Produit::create([
                'nom' => $faker->word,
                'prix' => $faker->randomFloat(2, 10, 1000),
                'qteStock' => $faker->numberBetween(0, 100),
                'idCategorie' => $categories->random()->idCategorie,
            ]);
        }
    }
}
2.Exécution du seeder :
php artisan db:seed --class=ProduitsTableSeeder