找不到四位数年份数据丢失保存条件



这是我在面试表格"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

最新更新