我设法为发布时需要在数据库中的数据设置了相当数量的种子。一切都很简单并且运行良好,直到我需要使用默认日期为DATE字段播种。
我已尝试过以下内容......
DatabaseSeeder.php
class SettingsTableSeeder extends Seeder {
public function run()
{
Setting::create([
'name' => 'Start Date',
'date' => '2000-01-01'
]);
}
}
在我的模型中,我被告知要添加应修复它,但它没有。
Setting.php
protected $dates = [
'created_at',
'updated_at',
'date'
];
每次我去运行播种机时都会抛出错误:
[InvalidArgumentException]
The separation symbol could not be found
Unexpected data found.
Trailing data
如果我删除了更改日期的引号..
[InvalidArgumentException]
The separation symbol could not be found
Data missing
知道如何为DATE数据库字段播种默认值吗?
答案 0 :(得分:6)
如果date
在$dates
数组中,请插入Carbon实例而不是字符串:
Setting::create([
'name' => 'Start Date',
'date' => Carbon::parse('2000-01-01')
]);
您需要确保Carbon
可以在文件顶部使用:
use Carbon\Carbon;
它由Laravel / Composer自动加载。
答案 1 :(得分:1)
只需尝试使用date
插入Carbon
,
class SettingsTableSeeder extends Seeder {
public function run(){
Setting::create([
'name' => 'Start Date',
'date' => \Carbon\Carbon::createFromDate(2000,01,01)->toDateTimeString()
]);
}
}
答案 2 :(得分:0)
Alexey Mezenin和Jaymin Panchal给出的答案仍然导致拖尾数据错误。
最终为我工作的是包括......
use Carbon\Carbon;
位于DatabaseSeeder.php文件的顶部。
然后将我的Setting :: create更改为...
DB::table('settings')->insert([
'name' => 'Start Date',
'date' => Carbon::create('2000', '01', '01')
]);
出于某种原因,我不能在播种时使用标准的Model :: create方法使用Carbon,但它适用于DB :: table(' table') - > insert。