Laravelの日時に関するバリデーション実例メモ


想定環境

  • Laravel5.5以降
  • 入力フォーム
    「開始日時」(start_datetime)
    「終了日時」(end_datetime)
    がある

実例

1・片方入力された場合はどちらも必須にする判定

public function rules()
{
  $rules = [ 
   'start_datetime' => 'nullable|required_with:end_datetime',
   'end_datetime' => 'nullable|required_with:start_datetime'
   ];
}

2・終了日が開始日の後であるか判定

public function rules()
{
   $rules = [ 
   'end_datetime' => 'after:start_datetime'
    ];
}

3・入力された内容が指定された形式か判定

public function rules()
{
   $rules = [ 
   'start_datetime' => 'date_format:"Y/m/d H:i:s"',
   'end_datetime' => 'date_format:"Y/m/d H:i:s"'
    ];
}

または下記を追加。

public function rules()
{
   $rules = [ 
   'start_datetime' => 'regex:/[0-9]+\/[0-9]+\/[0-9]+\s-\s[0-9]+\/[0-9]+\/[0-9]+/',
   'end_datetime' => 'regex:/[0-9]+\/[0-9]+\/[0-9]+\s-\s[0-9]+\/[0-9]+\/[0-9]+/'
    ];
}