我正在使用此datetimepicker发送日期,其格式为MMM D, YYY
由MomentJS创建,无法提交与用户显示的格式不同的格式默认值。
所以在服务器端,我在模型中为日期添加了一个mutator:
public function setStartDateAttribute($startDate) {
//dd(Carbon::parse($startDate)->toDateTimeString());
return Carbon::parse($startDate)->toDateTimeString();
}
当我dd
时,该值应为2015-10-22 00:00:00
,但它会将日期保存为0000-00-00 00:00:00
,或者根本就没有设置日期,我不知道理解。
我不想更改数据库中时间戳的格式,因此我没有设置$dateFormat
并在模型的'start_date'
数组中设置$dates
。认为变异器似乎更容易。该字段在迁移文件中设置为date()
,我很确定我之前已经完成此操作并且它只是起作用。所以我在没有mutator的情况下在我的控制器中尝试了它并且相同的线路工作:
public function update(TournamentRequest $request, $tournamentId)
{
// Update a tournament with all fillable data, and persist to database
$tournament = Tournament::find($tournamentId)->fill($request->except('start_date'));
$tournament->start_date = Carbon::parse($request->start_date)->toDateTimeString();
$tournament->save();
return Redirect::route('dashboard.tournaments.index');
}
为什么在模型中没有mutator设置的情况下,相同的代码在控制器内工作,但在使用mutator时不起作用?
答案 0 :(得分:0)
这是为属性创建setter方法的方法。注意:您不返回任何内容,只需为属性指定值:
public function setStartDateAttribute($startDate) {
$this->attributes['start_date'] = Carbon::parse($startDate)->toDateTimeString();
}
假设您要在表格中设置名为start_date
的字段。