2016-11-10 2 views
1

Это мой формат поля 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

Я полагаю, что ваш start_date в базе данных типа «DATE», но если вы не заполнить дату, когда вы пытаетесь для вставки строки 'YYYY-MM-DD'. –

+0

не будет проблем, если поле start_date в вашей базе данных является строкой. какой тип столбца - ваше поле? –

+0

@AbdouTahiri Тип даты –

ответ

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

Надеюсь, это поможет!

+0

, за исключением использования миграции и установить его на значение NULL, есть ли способ «обмануть» его? –

+0

@AndrewVanusi - Я думаю, вы не можете, скорее, вы можете ввести '0000-00-00', и в своей логике рассматривайте это как пустую дату. Должен попробовать это на этот раз. –

0

По умолчанию Laravel 5.3 использует строгий режим для MySQL.

Если вы хотите, чтобы вернуть это поведение, а затем обновить файл config/database.php и установить

'strict' => false 
Смежные вопросы