当我尝试从我的 Laravel 控制器中获取 JSON 格式的 Eloquent 模型对象列表时,我遇到了一个错误:
InvalidArgumentException in Carbon.php line 393:
Trailing data
堆栈跟踪的相关部分是:
1. in Carbon.php line 393
2. at Carbon::createFromFormat('Y-m-d H:i:s', '2015-04-20 18:07:13.769') in Model.php line 2889
3. at Model->asDateTime('2015-04-20 18:07:13.769') in Model.php line 2392
4. at Model->attributesToArray() in Model.php line 2371
似乎我的问题的根源是,当将模型序列化为 JSON 时,它试图解析时间戳列之一的值以创建一个 Carbon 对象(我想它会被转换回字符串)但它使用了错误格式。
格式字符串来自Model::getDateFormat()
默认情况下是:
$this->getConnection()->getQueryGrammar()->getDateFormat()
并且结果'Y-m-d H:i:s'
不是 PostgreSQL 给出的是什么 'Y-m-d H:i:s.u'
(或其他东西,不确定毫秒和微秒是否可以这样互换)。当然,可以只覆盖getDateFormat()
我所有的模型类,但这很烦人(而且不是真正的正确位置,因为模型应该是相当独立于数据库的),即使我只是让它们都继承自基类。有没有办法设置查询语法的日期格式?似乎应该可以通过数据库配置文件来实现,但我在文档中找不到任何关于此的内容。