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
Réponse acceptée

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 ;)

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 ?

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.

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

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