Maison  >  Questions et réponses  >  le corps du texte

Comment ajuster le nombre d'objets créés dans Sequence (Laravel 8)

<p>J'essaie de créer 30 actualités à l'aide de Seeder et Factory. Mais je dois créer 10 nouvelles avec une valeur de champ non nulle <code>published_at</code>(Carbon) et d'autres nouvelles avec une valeur aléatoire (Carbon/NULL). </p> <p>Dans la documentation, j'ai vu un exemple de ceci, qui créait 5 enregistrements avec la valeur <code>admin (Y)</code>, et 5 autres enregistrements avec la valeur <code> )</code>. </p> <pre class="brush:php;toolbar:false;">User::factory() ->compte(10) ->état (nouvelle séquence ( ['admin' => 'Y'], ['admin' => 'N'], )) ->create();</pre> <p>Jusqu'à présent, j'utilise ce code mais je n'arrive pas à comprendre comment ajouter le nombre d'enregistrements avec une valeur de paramètre spécifique <code>published_at</code>. Par exemple, utilisez Carbon pour 10 éléments et NULL pour 20 éléments. </p> <pre class="brush:php;toolbar:false;">/**ArticleSeeder*/ Article ::usine() ->compte(30) ->état (nouvelle séquence ([ 'published_at' => Factory::create()->dateTimeBetween( maintenant()->startOfMonth(), maintenant()->endOfMonth() ), ])) ->create();</pre></p>
P粉043566314P粉043566314434 Il y a quelques jours523

répondre à tous(1)je répondrai

  • P粉957723124

    P粉9577231242023-09-05 00:50:01

    Dans une fermeture de séquence, vous avez accès à la propriété $index, qui contient le nombre d'itérations dans la séquence jusqu'à présent.

    Voici la logique la plus simple que vous pouvez utiliser pour obtenir les résultats souhaités.

    Article::factory()
    ->count(30)
    ->sequence(fn ($sequence) => [
        'published_at' => $sequence->index < 10
                          ?  Factory::create()->dateTimeBetween(
                                 now()->startOfMonth(),
                                 now()->endOfMonth()
                             );
                          : null
    ])
    ->create();

    répondre
    0
  • Annulerrépondre