Autour de Laravel

Assigné un ID -> DatabaseSeeder

Avatar de StephaneMarry
StephaneMarry

Bonjour tout le monde. Je suis bloquer avec mon databaseSeeder.php. J'essaye d'assigner un ID random aux éléments créé pendant la boucle. Mais ça ne marche pas :s

Si quelqu'un à une piste svp 🙂

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        $categories =  \App\Models\Category::factory(5)->create();

        \App\Models\Course::factory(8)->create()->each(function($course) use ($categories){

            \App\Models\Lesson::factory(rand(3,5))->create([
                'course_id'=>$course->id
            ]);
          
            $course->category()->attach($categories->random(1)->id);
        });
        

    }
}
Posté il y a 1 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Salut,

Je ne me sers jamais de factories mais je vais essayer de t'aider.

Tout d'abord, tu dis que ça ne marche pas mais on ne pourrais pas avoir l'erreur piur en savoir plus ? Deuxièmement tu note factory(5)->create(); mais quand je regarde sur la doc, je vois plutôt factory()->count(5)->create(); Enfin, je ne suis pas certain que tu puisse faire un random() sur $categories dans ce sens où je ne sais pas si un create va te retourner tous les objets créés ou plutot simplement une valeur TRUE. Dans ce cas de figure il faudrait plutôt faire :

\App\Models\Category::factory(5)->create();
$categories =  \App\Models\Category::all();

Dernière question, tu es a quelle version de Laravel ?

Posté il y a 1 mois

Vous ne pouvez pas répondre à ce sujet.