2016-06-13 7 views
0

Laravelアプリケーションのユーザーから3つの異なる選択肢、すなわちdd(1-31)mm(1-12)yyyy(1905- 2016)yyyy mm ddをlaravel dateに変換し、mysql date()カラムに挿入する方法

どのように私はPHPの日付に変換し、FOLコードを使用してLaravelの移行によって作成されたMySQLの列に挿入します:

$table->date('dateOfBirth')->nullable(); 

も、私はそれを構成した後、Laravelのバリデータを使用して日付を検証します。

+0

jqueryまたはjavascriptを使用していますか?これらの3つの値を一緒にして隠しフィールドを埋め、ユニークな日付として送信してください。カスタムフォームリクエストを使用してフィールド名の検証を行うことができたら、[docs](https://laravel.com/docs/5.2/validation#form-request-validation)をチェックしてください。 –

答えて

1

それが別々の入力(Input::get('month')Input::get('day')Input::get('year'))だ場合、あなたは単なる文字列として一緒にそれを置くことができます。

$date = Input::get('year')."-".Input::get('month')."-".Input::get('day'); 

あなたはまた、それを作成するためにカーボンを使用することができます。

$date = Carbon::createFromDate(Input::get('year'),Input::get('month'), Input::get('day')); 

Carbonは、フォーマットが正しいことを検証するのに役立ちます。

+0

これはうまくいくようですが、それでもなお、日付日付=> '必須|日付'のような炭素の日付作成フォームでは、ラベリングの検証はできません – Eirtaza

+0

'$ date-> toDateString()' – aynber

1

は、あなたがこのコントローラにあなたのデータを掲載しているとしましょう:ここ

class MyController 
{ 
    .... 
    public function store(Request $request) 
    { 
     //validate 
     $this->validate($request, [ 
      'day' => 'required|integer|min:1|max:31', 
      'month' => 'required|integer|min:1|max:12', 
      'year' => 'required|integer|min:1905|max:'.date('Y'), 
     ]); 

     //parse 
     $day = $request->input('day'); 
     $month = $request->input('month'); 
     $year = $request->input('year'); 

     $dateOfBirth = \Carbon\Carbon::createFromDate($year,$month,$day); 

     //persist 
     if($dateOfBirth) { 
      $model = new Model(); 
      $model->dateOfBirth = $dateOfBirth->toDateString(); 
      ... 
      $model->save(); 
     } else { 
      echo "Problem parsing date"; 
     } 
    } 
} 

私opinioあなたはFebruary "30"のような問題を回避するために、カレンダーコンポーネントを使用する必要があるということです。

+0

feb 30バリデーションは本当の問題です.... – Eirtaza

+0

クライアントサイドで日付を構成するにはjavascriptを使用しなければなりません...コランダコンポーネントとは何ですか? – Eirtaza

関連する問題