我已经被困了好几天了,我无法将我的日期保存到我的数据库中,并且在问题发生后有问题。有人可以推荐一个视频/文章,或只是简单解释如何完全处理日期?
移植
$table->dateTime('start_date');
$table->dateTime('end_date');
控制器
public function store(Request $request)
{
$this->validate(request(), [
'name' => 'required',
'description' => 'required',
'status' => 'required',
'startdate' => 'required',
'enddate' => 'required'
]);
Event::create(request(['name', 'description', 'status', 'start_date', 'end_date']));
return redirect('/events');
}
模型
THIS IS OBVIOUSLY THE ISSUE and I would paste things but theres multiple things I've put here and nothing works.
这是请求的dd
+request: ParameterBag {#40 ▼
#parameters: array:6 [▼
"_token" => "yjU5A0Z5dpRES7KWK82fRMbHMRQkaooe27vYKlo7"
"name" => "My first event"
"status" => "Inquery"
"description" => "this is my desc"
"start_date" => "02/16/2017 6:36 PM"
"end_date" => "02/24/2017 6:37 PM"
]
答案 0 :(得分:1)
您需要以其理解的格式向数据库提供日期(通过laravel)。
您在前端使用d/m/Y H:i A
格式(有关日期格式的更多信息,请参阅PHP Date page)。数据库喜欢以Y-m-d H:i:s
格式接收日期。更好的是,laravel可以将Carbon日期对象插入到数据库中,而不需要格式化。
由于Carbon附带了Laravel,您可以使用它将日期字符串更改为Carbon对象。
$start_date = \Carbon\Carbon::createFromFormat('d/m/Y H:i A', $request->input('start_date'));
如您所见,Carbon获取日期字符串,并且随着格式的提供,它可以轻松创建新的Carbon对象。这可以直接插入数据库。
如果您真的想要,可以使用$start_date->toDateTimeFormat();
或$start_date->format('Y-m-d H:i:s');
将其明确地转换为字符串。
// put the first three elements in the insertData array
$insertData = request()->only(['name', 'description', 'status']);
$insertData['start_date'] = \Carbon\Carbon::createFromFormat('d/m/Y H:i A', $request->input('start_date'));
$insertData['end_date'] = \Carbon\Carbon::createFromFormat('d/m/Y H:i A', $request->input('end_date'));
// both dates are now carbon objects, not strings
Event::create($insertData);