无法找到四位数年份数据缺失保存条件

时间:2016-11-10 16:24:28

标签: php laravel

这是我在面试表格中的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');
    }

}

任何想法?

2 个答案:

答案 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