如果我设置此变量,我看不出任何差异。
我需要一些基本的例子
如果设置了此变量:
protected $dateFormat = "d.m.Y H:i";
它有什么区别?
P.S。我已经在Docu中读过了,但是目前还不清楚这个日期格式在哪里实际使用过?
https://laravel.com/docs/5.5/eloquent-mutators#date-mutators
'timezone' => 'Europe/Berlin',
将变量设置为:
protected $dateFormat = "d.m.Y H:i";
我在表单提交时收到错误:
如果我没有设置变量
我收到此错误:
答案 0 :(得分:1)
TL; DR:您的$dateFormat
用于解析传入的帖子数据,并格式化发送到您数据库的数据。这意味着,如果没有任何其他代码(读取:覆盖此设置的setter),您的UI必须使用与数据库相同的日期时间格式。
$dateFormat
HasAttributes::asDateTime
使用$casts
。此方法在许多地方用于处理将属性自动转换为适当的数据类型。这包括$dates
数组和Model::fill(...)
数组。
一个常见的调用是通过HasAttributes::setAttribute(...)
> HasAttributes::fromDateTime(...)
> Model::__set(...)
。请注意,HasAttributes::setAttribute(...)
也会调用$dateFormat
。这意味着当您使用批量赋值/可填充时,或者使用$model->myField = ...;
直接设置属性时,HasAttributes::fromDateTime(...)
用于解析来自[假定]表单帖子的传入字符串值。您希望将格式设置为浏览器发布的内容,以便可以将值正确地解析为Carbon对象。
然后将Carbon对象序列化为$dateFormat
中的字符串,这意味着Laravel将日期时间值作为字符串处理,这在研究时会让我感到惊讶。这意味着$ attributes数组包含日期时间值的字符串表示形式,并且这些字符串值将发送到数据库。
这意味着with open('/path/to/your/file.name', 'w') as f:
f.write('text')
需要生成数据库支持的字符串值。
请记住,这是提交时的日期时间值的格式,未显示。例如,datetime-local html5数据类型在格式化datetime时将使用本地语言环境,但始终以指定的格式发布值。
需要注意的一点是显示的日期格式与实际值不同 - 将根据用户操作系统的设置区域设置选择显示的日期格式,而日期值始终格式为yyyy- MM-DDTHH:毫米
答案 1 :(得分:-1)
这是它在数据库中保存的格式。