php faker 和 laravel factorties 每个新行的唯一日期
php faker and laravel factorties unique date for each new row
我想在数据库中创建 24 行 table 每行都需要一个唯一的日期,在 1/12/2019(12 月 1 日)和 24/12/2019(12 月 24 日)之间包容性。
我在 运行 测试时使用工厂来创建数据行,我的工厂当前运行如下所示,
$factory->define(Quiz::class, function (Faker $faker) {
return [
'date_playable' => $faker->dateTimeInInterval('2019-12-01', '+ 1 day', 'Europe/London')
];
});
在我的测试中,我执行以下操作,
$quizes = factory('App\Quiz', 24)->create();
然而,当我查询数据库时,测验 table 中的行 date_playable 都是唯一的,因为它们都有唯一的时间作为 DATETIME 的一部分,但日期始终是 2019-12 -01。
如何确保每一行都有一个 date_playable
从最后一行开始递增,或者在它的 DATETIME 字符串中有一个唯一的日期?
我觉得你最好创建一个普通的工厂。
工厂
$factory->define(Quiz::class, function (Faker $faker) {
return [
'date_playable' => $faker->dateTime(),
];
});
在测试中根据需要创建一个日期范围,并为每个日期调用工厂。
测试
$dates = CarbonPeriod::create('2019-12-01', '2019-12-12');
$dates->forEach(function($date) {
factory(Quiz::class)->create([
'date_playable' => $date->toDateTimeString(),
]);
});
我想在数据库中创建 24 行 table 每行都需要一个唯一的日期,在 1/12/2019(12 月 1 日)和 24/12/2019(12 月 24 日)之间包容性。
我在 运行 测试时使用工厂来创建数据行,我的工厂当前运行如下所示,
$factory->define(Quiz::class, function (Faker $faker) {
return [
'date_playable' => $faker->dateTimeInInterval('2019-12-01', '+ 1 day', 'Europe/London')
];
});
在我的测试中,我执行以下操作,
$quizes = factory('App\Quiz', 24)->create();
然而,当我查询数据库时,测验 table 中的行 date_playable 都是唯一的,因为它们都有唯一的时间作为 DATETIME 的一部分,但日期始终是 2019-12 -01。
如何确保每一行都有一个 date_playable
从最后一行开始递增,或者在它的 DATETIME 字符串中有一个唯一的日期?
我觉得你最好创建一个普通的工厂。
工厂
$factory->define(Quiz::class, function (Faker $faker) {
return [
'date_playable' => $faker->dateTime(),
];
});
在测试中根据需要创建一个日期范围,并为每个日期调用工厂。
测试
$dates = CarbonPeriod::create('2019-12-01', '2019-12-12');
$dates->forEach(function($date) {
factory(Quiz::class)->create([
'date_playable' => $date->toDateTimeString(),
]);
});