【发布时间】:2026-01-01 11:15:01
【问题描述】:
我正在使用此 Bootstrap datetimepicker 发送日期,格式为 MMM D, YYY,由 MomentJS 创建,它不能提交与默认显示给用户的格式不同的格式。
所以在服务器端,我为模型中的日期添加了一个修改器:
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,或者根本没有设置日期,我不明白。
我不想更改时间戳在数据库中的格式,所以我没有在模型的$dates 数组中设置$dateFormat 和'start_date'。认为变异器似乎更容易。该字段在迁移文件中设置为date(),我很确定我之前已经这样做了,而且它确实有效。所以我在没有突变器的控制器中尝试了它,并且同一行有效:
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');
}
为什么相同的代码在没有在 Model 中设置 mutator 的情况下在控制器内部工作,但在使用 mutator 时不起作用?
【问题讨论】:
-
Erm... 为什么你的 mutator 只是返回值而不是实际设置你的 start_date 属性?
-
哈哈@MattGibson,哦,伙计,我一直在盯着这个看,在做其他事情,想知道哪里出了问题……谢谢!哦,真可惜。
标签: date laravel laravel-5 laravel-5.1