如何調整Sequence(Laravel 8)中建立的物件數量
P粉043566314
P粉043566314 2023-09-04 10:08:32
0
1
524
<p>我正在嘗試使用Seeder和Factory創建30條新聞。但我需要建立10個具有非空白欄位值<code>published_at</code>(Carbon)的新聞,而其他新聞則具有隨機值(Carbon/NULL)。 </p> <p>在文件中,我看到了這樣一個例子,它創建了5筆記錄,值為<code>admin (Y)</code>,以及另外5筆記錄,值為<code> admin (N)</code>。 </p> <pre class="brush:php;toolbar:false;">User::factory() ->count(10) ->state(new Sequence( ['admin' => 'Y'], ['admin' => 'N'], )) ->create();</pre> <p>到目前為止,我使用了這段程式碼,但我無法弄清楚如何新增具有特定參數值<code>published_at</code>的記錄數。例如,10條使用Carbon,20條使用NULL。 </p> <pre class="brush:php;toolbar:false;">/**文章播種者*/ Article::factory() ->count(30) ->state(new Sequence([ 'published_at' => Factory::create()->dateTimeBetween( now()->startOfMonth(), now()->endOfMonth() ), ])) ->create();</pre></p>
P粉043566314
P粉043566314

全部回覆(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();
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!