Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk melaraskan bilangan objek yang dibuat dalam Jujukan (Laravel 8)

<p>Saya cuba mencipta 30 item berita menggunakan Seeder dan Factory. Tetapi saya perlu mencipta 10 berita dengan nilai medan bukan nol <code>published_at</code>(Carbon) dan berita lain dengan nilai rawak(Carbon/NULL). </p> <p>Dalam dokumentasi, saya melihat contoh ini, yang mencipta 5 rekod dengan nilai <kod>admin (Y)</code> dan 5 lagi rekod dengan nilai <kod> )</kod>. </p> <pre class="brush:php;toolbar:false;">User::factory() ->kiraan(10) ->nyatakan(Jujukan baharu( ['admin' => 'Y'], ['admin' => 'N'], )) ->buat();</pre> <p>Setakat ini saya menggunakan kod ini tetapi saya tidak dapat memikirkan cara menambah bilangan rekod dengan nilai parameter tertentu <kod>published_at</code>. Sebagai contoh, gunakan Karbon untuk 10 item dan NULL untuk 20 item. </p> <pre class="brush:php;toolbar:false;">/**ArticleSeeder*/ Artikel::kilang() ->kiraan(30) ->nyatakan(Jujukan baharu([ 'published_at' => Kilang::create()->dateTimeBetween( sekarang()->startOfMonth(), sekarang()->endOfMonth() ), ])) ->buat();</pre></p>
P粉043566314P粉043566314434 hari yang lalu522

membalas semua(1)saya akan balas

  • P粉957723124

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

    Dalam penutupan jujukan, anda mempunyai akses kepada sifat $index, yang mengandungi bilangan lelaran melalui jujukan setakat ini.

    Berikut ialah logik paling mudah yang boleh anda gunakan untuk mencapai hasil yang anda inginkan.

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

    balas
    0
  • Batalbalas