Postgresql 当我想用laravel在DB中插入日期时出错
我正在使用Laravel5.1和eloquent,我有一个postgre数据库,我想在其中插入一个带有日期的对象。我的开始格式日期类似于“2015年10月15日”,我需要转换为“Y-m-d” 为此,我在模型中使用了日期变量,我添加了以下行:Postgresql 当我想用laravel在DB中插入日期时出错,postgresql,date,eloquent,laravel-5.1,php-carbon,Postgresql,Date,Eloquent,Laravel 5.1,Php Carbon,我正在使用Laravel5.1和eloquent,我有一个postgre数据库,我想在其中插入一个带有日期的对象。我的开始格式日期类似于“2015年10月15日”,我需要转换为“Y-m-d” 为此,我在模型中使用了日期变量,我添加了以下行: protected $dates = ['created_at', 'updated_at', 'prj_start_date', 'prj_end_date_init']; 我使用带有服务和存储库的体系结构,因此在数据库中创建对象的存储库中,我有: $t
protected $dates = ['created_at', 'updated_at', 'prj_start_date', 'prj_end_date_init'];
我使用带有服务和存储库的体系结构,因此在数据库中创建对象的存储库中,我有:
$this->model->create($data);
当我尝试插入时,出现了此错误
InvalidArgumentException in Carbon.php line 425:
Unexpected data found.
Unexpected data found.
Data missing
in Carbon.php line 425
at Carbon::createFromFormat('Y-m-d H:i:s', '15/10/2015') in Model.php line 2959
at Model->asDateTime('15/10/2015') in Model.php line 2915
at Model->fromDateTime('15/10/2015') in Model.php line 2870
at Model->setAttribute('prj_start_date', '15/10/2015') in Model.php line 422
为什么没有工作,我错过了什么?
有人能帮帮我吗?在Model.php第2959行的Carbon::createFromFormat('Y-m-dh:i:s','15/10/2015')中,很明显,laravel以某种方式硬编码了它的日期变量。我建议使用手动方法,通过以下方式将字符串转换为
Carbon
实例:
Carbon::createFromFormat($format, $time, $tz);
例如,假设有一个日期字段而不是时间戳:
Carbon::createFromFormat('d/m/Y', '15/10/2015');
ps。我还没有时间测试这个。尽管如此,从中学到东西还是很有趣的,对吗
ps。您可能对更改laravel的格式感兴趣,但我怀疑这会影响默认情况下是时间戳而不是日期的在
处创建的和在
处更新的字段
ps。好的,我确实忘了提到你必须在你的控制器中添加Carbon,只需添加使用Carbon/Carbon
谢谢,但我想在控制器中转换我的日期(我有很多日期)。我解决了我的问题。我为我的所有日期添加了一个变量。code:private函数setPrjStartDateValue($value){$date\u parts=explode('/',$value);$this->attributes['prj\u start\u date']=$date\u parts[2].-'.$date\u parts[0].-'.$date parts[1];}
这是解决方案之一(但不是我想到的那个)。很高兴你能解决。