我的时间似乎正在更新,但当我在数据库(mysql)中查找字段时,我发现时间已更改为 AM 。这种情况发生在->update
但不是::create
这是我的
在->update
电话
array(14) { ["_method"]=> string(5) "PATCH"
["_token"]=> string(40) "A3OknqVoHtva73nn5HZTBYyFd8v42WOUNlc3ED5G"
["start_time"]=> string(6) "4:30pm"
["end_time"]=> string(6) "5:30pm"
}
这是我的控制器代码。
控制器
public function update($id)
{
$scheduled_program = ScheduledProgram::findOrFail($id);
$validator = Validator::make($data = Input::all(), ScheduledProgram::$rules);
if ($validator->fails())
{
return Redirect::back()->withErrors($validator)->withInput()->with('id', $id);
}
if($validator->passes()) {
$scheduled_program->update($data);
$scheduled_program->save();
dd($scheduled_program);
}
}
dd($scheduled_program)
显示
["start_time"]=> string(6) "4:30pm"
["end_time"]=> string(6) "5:30pm"
但在我的数据库中,我看到AM值04:30:00 05:30:00
,当我打开显示值的页面时,它们是AM值。看起来模型正在更新,但它会在数据库中转换为AM值。
答案 0 :(得分:1)
您可以使用Eloquent Accessors和Mutators自动设置或获取正确的格式来解决此问题。
我自动说,因为你不需要直接调用访问者或变种器,但你很简单就是这样:
User::find(1)->start_time;
在后台,访问者方法将自动完成其工作。
Checkout Laravel文档Eloquent部分了解详情
https://laravel.com/docs/master/eloquent-mutators
您需要将其添加到模型中。
public function setStartTimeAttribute($value) {
$this->attributes['start_time'] = date("H:i:s", strtotime($value));
}
public function getStartTimeAttribute($value) {
return date("g:i a", strtotime($value));
}