2017-07-08 68 views
3

對於以下出廠定義,列order需要是順序的。已經有一列id自動遞增。第一行的order應該開始在1和每個附加行的order應該是下一個號碼(123等)Laravel Factory:手動增量列

$factory->define(App\AliasCommand::class, function (Faker\Generator $faker) { 
    return [ 
     'user_id' => App\User::inRandomOrder()->first()->id, 
     'command' => $faker->word, 
     'content' => $faker->sentence, 
     'order' => (App\AliasCommand::count()) ? 
      App\AliasCommand::orderBy('order', 'desc')->first()->order + 1 : 1 
    ]; 
}); 

應設置order柱比前一行1以上但是,它會導致所有行被分配爲1

+0

您確定訂單字段有重複值嗎?這種解決方案不會阻止競爭條件。 –

回答

8

這是可能的工作。

$factory->define(App\AliasCommand::class, function (Faker\Generator $faker) { 
    static $order = 1; 
    return [ 
     'user_id' => App\User::inRandomOrder()->first()->id, 
     'command' => $faker->word, 
     'content' => $faker->sentence, 
     'order' => $order++ 
    ]; 
}); 

它只是保持該功能的內部計數器。