2016-11-10 9 views
1

これは、インタビューフォーム "YYYY-MM-DD"のstart_dateフィールドフォーマットです。4桁の年が見つかりませんでした。データがありません保存条件

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

を設定し、私は、データベース内のあなたのSTART_DATEが、型「DATE」があるが、あなたは、あなたがしようとした日付を記入しないときと仮定文字列 'YYYY-MM-DD'を挿入します。 –

+0

データベースのstart_dateフィールドが文字列の場合は問題ありません。あなたのフィールドはどの列タイプですか? –

+0

@AbdouTahiri日付のタイプ –

答えて

0

start_dateの列をデフォルトでnullable()に設定する必要があります。開始日を終了する場合は、離れることができ、Eloquentは自動的にnullを入力します。マイグレーションでこれを使用してnullableに設定してください。

// 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 
関連する問題