So passen Sie die Anzahl der in Sequence erstellten Objekte an (Laravel 8)
P粉043566314
P粉043566314 2023-09-04 10:08:32
0
1
471
<p>Ich versuche, 30 Nachrichten mit Seeder und Factory zu erstellen. Aber ich muss 10 Nachrichten mit einem Feldwert ungleich Null <code>published_at</code>(Carbon) und andere Nachrichten mit einem Zufallswert (Carbon/NULL) erstellen. </p> <p>In der Dokumentation habe ich ein Beispiel dafür gesehen, das 5 Datensätze mit dem Wert <code>admin (Y)</code> und weitere 5 Datensätze mit dem Wert <code>(N) erstellt hat )</code>. </p> <pre class="brush:php;toolbar:false;">User::factory() ->Anzahl(10) ->state(neue Sequenz( ['admin' => 'Y'], ['admin' => 'N'], )) ->create();</pre> <p>Bisher verwende ich diesen Code, kann aber nicht herausfinden, wie ich die Anzahl der Datensätze mit einem bestimmten Parameterwert <code>published_at</code> hinzufügen kann. Verwenden Sie beispielsweise Carbon für 10 Elemente und NULL für 20 Elemente. </p> <pre class="brush:php;toolbar:false;">/**ArtikelSeeder*/ Artikel::factory() ->Anzahl(30) ->state(neue Sequenz([ 'published_at' => Factory::create()->dateTimeBetween( now()->startOfMonth(), now()->endOfMonth() ), ])) ->create();</pre></p>
P粉043566314
P粉043566314

Antworte allen(1)
P粉957723124

在序列闭包中,您可以访问$index属性,该属性包含迄今为止通过序列进行的迭代次数。

以下是您可以使用的最简单的逻辑来实现您想要的结果。

Article::factory()
->count(30)
->sequence(fn ($sequence) => [
    'published_at' => $sequence->index < 10
                      ?  Factory::create()->dateTimeBetween(
                             now()->startOfMonth(),
                             now()->endOfMonth()
                         );
                      : null
])
->create();
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!