【发布时间】:2016-03-01 16:26:07
【问题描述】:
我的时间似乎正在正确更新,但是当我在我的数据库 (mysql) 中查找该字段时,我看到时间已更改为 AM。 ->update 会发生这种情况,::create 不会发生这种情况
这是我的
$data = Input::all() 在->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 值。
【问题讨论】:
-
将“start_time”和“end_time”添加到模型上的 $dates 数组中。然后你必须更新 $data 数组如下 $dates['start_date']=Carbon\Carbon::createFromFormat("g:ia", $dates['start_date']);和 end_date 一样
-
"start_time" 和 "end_time" 已经是我的数据库表中模型和字段的一部分,我是否需要在 "$dates" 中将它们设为数组?我应该把它放在控制器中还是有更好的地方,比如验证器或规则?谢谢!
-
你必须告诉模型这些需要被视为日期(作为碳实例)。所以你需要将它们添加到模型中的受保护变量 $dates 中(如这里laravel.com/docs/4.2/eloquent#soft-deleting)。当您检索这些时,您将获得 Carbon 对象而不是字符串变量
-
$dates 不适用于我的
time格式化 str 类型:(