gpt4 book ai didi

php - Laravel 工厂 : Manual Increment of Column

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:56:27 26 4
gpt4 key购买 nike

对于以下工厂定义,order 列需要按顺序排列。已经有一个自动递增的 id 列。第一行的 order 应该从 1 开始,每一行的 order 应该是下一个数字 (1,2,3等)

$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

最佳答案

这里有些东西可能有用。

$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++
];
});

它只是在该函数内部保留一个计数器。

更新:

Laravel 8 引入了新的工厂类,所以这个请求变成了:

class AliasCommandFactory extends Factory {

private static $order = 1;

protected $model = AliasCommand::class;

public function definition() {
$faker = $this->faker;
return [
'user_id' => User::inRandomOrder()->first()->id,
'command' => $faker->word,
'content' => $faker->sentence,
'order' => self::$order++
];
}
}

关于php - Laravel 工厂 : Manual Increment of Column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44983693/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com