我有一個 tv_shows 表,我試圖在其中存盤每個電視節目的開始和結束日期時間。
這是我的遷移:
Schema::create('tv_shows', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('channel_id');
$table->foreign('channel_id')->references('id')->on('channels')
->onUpdate('cascade')->onDelete('cascade');
$table->unsignedBigInteger('tv_show_detail_id');
$table->foreign('tv_show_detail_id')->references('id')->on('tv_show_details')
->onUpdate('cascade')->onDelete('cascade');
$table->dateTime('starting_at');
$table->dateTime('ending_at');
$table->timestamps();
});
這是工廠:
public function definition()
{
$startingAt = Carbon::today()->copy()->addHours($this->faker->randomNumber());
return [
'starting_at' => $startingAt->toDateTimeString(),
'ending_at' => $startingAt->copy()->addHour()->toDateTimeString(),
'channel_id' => Channel::factory()->create()->id,
'tv_show_detail_id' => TvShowDetail::factory()->create()->id,
];
}
這是TvShow模型:
class TvShow extends Model
{
use HasFactory;
protected $casts = [
'created_at' => 'datetime:Y-m-d',
'starting_at' => 'datetime:Y-m-d H:i:s',
'ending_at' => 'datetime:Y-m-d H:i:s',
];
}
如果我跑步Tvshow::factory()->count(4)->make(),我會得到:
Illuminate\Database\Eloquent\Collection {#3593
all: [
App\Models\TvShow {#3611
starting_at: Carbon\Carbon @11472638400 {#3570
date: 2333-07-22 04:00:00.0 UTC ( 00:00),
},
ending_at: Carbon\Carbon @11472642000 {#3561
date: 2333-07-22 05:00:00.0 UTC ( 00:00),
},
channel_id: 1079,
tv_show_detail_id: 1079,
},
App\Models\TvShow {#3617
starting_at: Carbon\Carbon @1669834800 {#3560
date: 2022-11-30 19:00:00.0 UTC ( 00:00),
},
ending_at: Carbon\Carbon @1669838400 {#3589
date: 2022-11-30 20:00:00.0 UTC ( 00:00),
},
channel_id: 1080,
tv_show_detail_id: 1080,
},
App\Models\TvShow {#3635
starting_at: Carbon\Carbon @32836662000 {#3613
date: 3010-07-21 23:00:00.0 UTC ( 00:00),
},
ending_at: Carbon\Carbon @32836665600 {#3610
date: 3010-07-22 00:00:00.0 UTC ( 00:00),
},
channel_id: 1081,
tv_show_detail_id: 1081,
},
App\Models\TvShow {#3645
starting_at: Carbon\Carbon @1099374872400 {#3590
date: 36807-10-21 05:00:00.0 UTC ( 00:00),
},
ending_at: Carbon\Carbon @1099374876000 {#3607
date: 36807-10-21 06:00:00.0 UTC ( 00:00),
},
channel_id: 1082,
tv_show_detail_id: 1082,
},
],
}
正如您在幾乎所有情況下看到的那樣,年份都是錯誤的,應該是 2022,但有 2333、3010 等等。我的代碼哪里錯了?
uj5u.com熱心網友回復:
當你這樣做時:
$startingAt = Carbon::today()->copy()->addHours($this->faker->randomNumber());
Faker 可能會回傳 PHP 的任何內容mt_getrandmax作為randomNumber(). 在我的系統上,這是 2147483647。
2147483647 小時將近 25 萬年。
如果您想要真實的日期,請考慮使用 Faker 的日期和時間函式之一。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/440028.html
