Laravel"model->update($data)"将下午时间更改为上午



我的时间似乎更新正确,但是当我在数据库(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)); 
 }

相关内容

最新更新