我想插入当前日期和时间的日期,这是我的代码:
$test = new Test;
$dt = new DateTime;
$test->date = $dt->format('m-d-y H:i:s');
$test->users_id = Auth::user()->id;
$test->save();
问题是它不适合数据库中的正确日期,因此插入:
2007-02-18 09:52:41
答案 0 :(得分:1)
为什么要以数据库中未定义的自定义格式存储它?我认为错误的想法。
我认为合适的解决方案:
我将假设您将日期和时间作为TimeStamp值存储在MySQL数据库中,默认值为null
。像这样:
$table->timestamp('your-date-column')->nullable();
点击控制器方法时
public function yourControllerMethod(Request $request)
{
// Don't forget to import the Carbon namespace
$dateTime = Carbon::parse($request->your_datetime_field);
$request['your_datetime_field'] = $dateTime->format('Y-m-d H:i:s');
}
在检索your_datetime_field
时,默认使用以下方式将其解析为Carbon
实例:
Test.php
/**
* The dates that will be mutated to Carbon instance.
*
* @return array
*/
protected $dates = [
'your_datetime_field',
];
现在您已在运行时将字段转换为Carbon实例,则可以根据需要自由编辑日期和时间格式。
不合适的解决方案:
警告,我尚未对此进行测试,但是我认为它应该可以工作。
如果您仍要在数据库字段中将其另存为自定义格式,请将其另存为默认值为null
的字符串格式。
$table->string('your-date-column')->nullable();
然后在运行时将其强制转换为datetime类型。
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'your_datetime_field' => 'datetime:Y-m-d',
];
同样,我建议不要朝错误的方向前进,除非您知道自己在做什么以及后果如何。
您明白了。