这是我在面试表格"YYYY-MM-DD"中的开始日期字段格式。
问题是我不能保存当我没有填写start_date字段。
下面是目前为止我的savehandler代码:public function saveHandler(Request $request, $obj)
{
try {
DB::beginTransaction();
$obj->fill($request->all());
$obj->start_date = isset($interviewTracks['start_date']) ? $interviewTracks['start_date'] : 'YYYY-MM-DD';
if (!$obj->save()) {
throw new ValidationException($obj->errors());
}
foreach($request->interviewTracks as $interviewTracks) {
if (empty($interviewTracks['id'])) {
$interviewTracks = new InterviewTrack();
}
else {
$interviewTracks = InterviewTrack::find($interviewTracks['id']);
}
$interviewTracks->interview()->associate($obj);
$interviewTracks['interview_id'] = isset($interviewTracks['interview_id']);
$interviewTracks->status = $interviewTracks['status'];
$interviewTracks->track_date = isset($interviewTracks['track_date']) ? $interviewTracks['track_date'] : 'YYYY-MM-DD';
$interviewTracks->outcome = $interviewTracks['outcome'];
$interviewTracks->remarks = $interviewTracks['remarks'];
$interviewTracks->save();
};
if (!$interviewTracks->save()) {
throw new ValidationException($interviewTracks->errors());
}
DB::commit();
return $this->sendSuccessResponse($request);
} catch (ValidationException $e) {
DB::rollback();
Log::error($e->errors);
return $this->sendErrorResponse($request, $e->errors);
} catch (Exception $e) {
DB::rollback();
Log::error($e->getMessage());
return $this->sendErrorResponse($request,'Unable to process. Please contact system Administrator');
}
}
你知道吗?
您应该将start_date
列默认设置为nullable()
,因此,如果您想保留start_date,那么您可以保留它,Eloquent将自动在那里填充null。在您的迁移中使用它来将其设置为可空的…
// Example - Just for Demo
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->date('start_date')->nullable(); // <-------- This field sets to nullable by default
$table->timestamps();
});
希望这对你有帮助!
默认情况下,Laravel 5.3为MySQL使用严格模式。
如果您想恢复此行为,那么更新您的config/database.php
文件并设置
'strict' => false