2014-10-30 103 views
0

這就是我所擁有的,即使我有一個規則來檢查數據庫中「約會」表的唯一性,它只是多次存儲值。 任何人都可以建議我如何可以在我的表中存儲唯一的日期。提前致謝。在Laravel中針對數據庫的日期輸入驗證

public function store() 
     { 
      date_default_timezone_set('Australia/Melbourne'); 
      $date = date('Y/m/d', time()); 
      $todDate = new DateTime($date); 
      $dateFormated = $todDate->format('Y-m-d'); 

     $input = Input::all(); 

     $rules = array(
      'appoint_day' => 'required|unique:appointments' 
     ); 

     $validator = Validator::make($input, $rules); 

     if($validator->passes()) 
     { 
      $schedule = new Appointment; 
      $appoint_day = Input::get('appoint_date'); 

      if(strtotime($appoint_day) - strtotime($dateFormated) >= 0) 
      { 
       $schedule->user_id = Auth::user()->id; 
       $schedule->appoint_day = $appoint_day; 
       $schedule->save(); 
      } 
     } 
     else 
     { 
      echo 'failed'; 

     } 
return View::make('admin.professions.appointments'); 
    } 

回答

1

Input值命名爲appoint_date,但您要驗證一個名爲appoint_day場,這大概不存在。將您的字段名稱更改爲appoint_day,驗證程序應正常運行。

+0

哇!很奇怪! appoint_day是表中的列名,其中是__name_date是輸入字段名稱。是的,你的解決方案有效,但我不明白其背後的原因。非常感謝!!。 – score 2014-10-30 03:50:51

+1

這是因爲驗證程序期望*字段*的名稱來檢查(它在'Input'數組中),但是您沒有'appoint_day'字段...所以它不驗證任何內容。此外,除非您另行指定,否則「唯一」規則將使用輸入字段名稱作爲列名稱檢查數據庫。因此,如果您將字段名稱保留爲'appoint_date',則可以選擇''appoint_date'=>'required | unique:appointmentments,appoint_day''。 – damiani 2014-10-30 11:02:00

+0

快速幫助請與上述問題相關: 如何驗證唯一用戶的唯一「appoint_date」? 意思是,與01/01/2010相同的日期對於用戶1和用戶2是唯一的! 以下情況如何: $ rules = array( 'appoint_day'=>'required | unique:appointmentments,user_id' ); – score 2014-10-31 01:36:43