#php #laravel
Вопрос:
Я заполняю базу данных сеялками и фабриками, проблема в том, что мне нужно заполнить поле CREATED_AT датами, которые являются не сегодняшней датой, а случайными, чтобы иметь возможность заполнять различные графики, которые есть на странице.
Я пробовал, и иногда он вставляет данные, а иногда выдает ошибку, что поле недопустимо, и это в формате даты ошибка, которая выбрасывает меня в консоль.
ERROR MESSAGE
"Incorrect datetime value: '2021-09-05 00:00:00' for column 'created_at' at row 1"
код
$factory->define(Opportunity::class, function (Faker $faker) {
$account_id = Account::all()->random()->id;
$account = Account::find($account_id);
$contact = Contact::where('account_id',$account_id)->inRandomOrder()->limit(1)->first();
$created = $this->faker->dateTimeBetween($startDate = '-3 month', $endDate = 'now 6 month');
$date = strtotime(' 2 days', strtotime(Carbon::parse($created)));
return [
'created_at' => Carbon::parse($created)->format('Y-m-d H:i:s'), ///line error
'name' => $this->faker->name .' '.$this->faker->sentence(2),
'amount' => $this->faker->numberBetween($min = 120000, $max = 20000000),
'probability' => $faker->randomElement(['0','10','20','30','40','50','60','70','80','90','100']),
'description' => $this->faker->paragraph,
'lead_source_id'=> LeadSource::all()->random()->id,
'sales_stage_id'=> 1,
'account_id' => $account_id,
'user_id' => $account->user_id,
'contact_id' => ( $contact != null ? $contact->id : null),
'close_date' => Carbon::parse($date)->format('Y-m-d'),
'product_line_id'=> ProductLine::all()->random()->id
];
});
Комментарии:
1. какую версию laravel r вы используете?
2. @Pradeep Laravel 6
3. попробуйте, изменив
$this->faker
на$faker
4. Я не понимаю, почему это бесит, потому что всегда выдает мне ошибку с датой 2021-09-05 00:29:22
Ответ №1:
Попробуйте изменить $this->faker
$faker
, и миграция должна иметь $table->timestamps();
тогда вы можете использовать dateTimeBetween
непосредственно так
'created_at'=>$faker->dateTimeBetween($startDate = '-3 month',$endDate = 'now 6 month')
Класс сеялки возможностей
public function run()
{
factory(AppOpportunity::class,5)->create();
}
Класс DatabaseSeeder
$this->call([
OpportunitySeeder::class
]);
Комментарии:
1. счастливого кодирования! если возможно, пожалуйста, озвучьте ответы также спасибо