2016-11-10 24 views
1

這是我的採訪表格「YYYY-MM-DD」中的我的start_date字段格式。無法找到四位數年份數據缺失保存條件

問題是我無法保存,當我沒有填寫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

我假設你在數據庫起始日期的類型是「日期」,但是當您不填寫您嘗試的日期插入一個字符串'YYYY-MM-DD'。 –

+0

如果數據庫中的start_date字段是字符串,則不會出現問題。你的領域是什麼列類型? –

+0

@AbdouTahiri日期類型 –

回答

0

默認情況下,您應該將start_date列設置爲nullable(),所以如果您想離開start_date,那麼您可以離開它,並且Eloquent將自動填充空值。在你的遷移中使用它來設置它爲空...

// 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(); 
}); 

希望這有助於!

+0

除了使用遷移並將其設置爲空,有什麼方法可以「欺騙」它嗎? –

+0

@AndrewVanusi - 我認爲你不能,而你可以輸入'0000-00-00',並且在你的邏輯中把它當作一個空的日期。應該嘗試一次。 –

0

默認情況下,Laravel 5.3對MySQL使用嚴格模式。

如果你想恢復這個行爲,然後更新您的config/database.php文件,並設置

'strict' => false