Problème de seed

Par adrienpsn, il y a 7 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Je réalise une application sur Laravel et je rempli ma table tickets via le seeder suivant :

$factory->define(\App\Ticket::class, function (Faker $faker) { return [ 'category' => $faker->randomElement(['Hardware', 'Computer', 'Software', 'Tools']), 'title' => ucfirst($faker->word), 'description' => $faker->text(150), 'severity_id' => $faker->randomElement([1, 2, 3, 4]), 'user_id' => $faker->randomElement([1, 2]), 'resolved' => $faker->randomElement([0, 1]), 'solution' => $faker->text($faker->randomElement([10, 25, 35, 15, 10])) ]; });

Ce que je veux

Je voudrai que l'attribut solution (qui contient la réponse au ticket) soit rempli uniquement si l'attribut resolved est défini à 1 (soit résolu).

Ce que j'obtiens

Lorsque je seed, tous mes tickets ont une solution alors que certain ne sont pas résolu.

Merci pour votre aide.

5 réponses

Neewd, il y a 7 ans

C'est peut être pour avoir plus de chance de tomber sur le 10, j'ai déjà vu un pourcentage de chance de tomber sur un boolean, mais jamais sur un RandomElement.

adrienpsn, il y a 7 ans

Non ça ne sert à rien :D C'est une inattention !

adrienpsn, il y a 7 ans

J'ai dailleurs remplacé $faker->randomElement([0, 1]) par $faker->boolean(50)

Neewd, il y a 7 ans

Salut,

Ce que tu peux essayer de faire c'est de stocker le random element avant le return, puis assigner d'autres valeurs en fonction de celle-là et tout mettre dans ton return ensuite.

$factory->define(\App\Ticket::class, function (Faker $faker) { $resolved = $faker->randomElement([0, 1]); if ($resolved === 1) { $solution = $faker->text($faker->randomElement([10, 25, 35, 15, 10])); } else { $solution = ""; } return [ 'category' => $faker->randomElement(['Hardware', 'Computer', 'Software', 'Tools']), 'title' => ucfirst($faker->word), 'description' => $faker->text(150), 'severity_id' => $faker->randomElement([1, 2, 3, 4]), 'user_id' => $faker->randomElement([1, 2]), 'resolved' => $resolved, 'solution' => $solution ]; });

Dis moi si ça fonctionne ;)

Lartak, il y a 7 ans

Bonjour.
Par contre, quel intérêt y a t'il de mettre dans ton tableau de la méthode randomElement pour l'index solution la valeur 10 à deux reprises ?