我已经为启动时需要存储在数据库中的数据设置了相当数量的种子。一切都很简单并且运行良好,直到我需要为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数据库字段的默认值吗?

最佳答案

如果date$dates数组中,则插入Carbon实例而不是字符串:

Setting::create([
    'name' => 'Start Date',
    'date' => Carbon::parse('2000-01-01')
]);

您需要确保在文件顶部可以使用Carbon:
use Carbon\Carbon;

它是由Laravel/Composer自动加载的。

关于php - 如何在Laravel 5.3中播种日期字段?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41807853/

10-13 00:54