我的时间似乎更新正确,但是当我在数据库(mysql)中查找字段时,我看到时间更改为AM。这种情况发生在->update
,但不是::create
这是我的$data = ->update
调用之前的输入::all()
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 值。
您可以通过使用 Eloquent 访问器和突变器自动设置或获取正确的格式来解决此问题。
我说自动是因为您不需要直接调用访问器或突变器,但您只需执行以下操作:
User::find(1)->start_time;
在后台,访问器方法将自动完成其工作。
结帐 Laravel文档 雄辩部分详细介绍
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));
}