这是我在面试表格中的start_date字段格式" 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');
}
}
任何想法?
答案 0 :(得分:0)
默认情况下,您应该将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();
});
希望这有帮助!
答案 1 :(得分:0)
默认情况下,Laravel 5.3对MySQL使用严格模式。
如果您想恢复此行为,请更新您的config/database.php
文件并设置
'strict' => false