2017-02-15 1 views
1

空になったとき、私はlaravelを使用して、私の見解では、私はこのような入力日付ピッカーがあります。このコードで挿入NULL日付ピッカーは、AjaxをLaravelで

{!! Form::text('DESMES_Date_Analyses',null ,['class' => 'form-control datepicker']) !!} 

$('.datepicker').datepicker({ 
     format: 'yyyy-mm-dd', 
     todayHighlight: true, 
     language : 'fr' 
    }); 

をそして私が手値は次のようなものです:

その後、私はデータベースにAjaxリクエストの値を挿入します:

$.ajax({ 
      url: './register', 
      headers: {'X-CSRF-TOKEN': token}, 
      data: { 
       DESMES_Date_Analyses : date_analyses 
      }, 
      type: 'POST', 
      datatype: 'JSON' 
)}; 

そして、私のコントローラで私が:

public function register(Request $request) { 
    if($request->ajax()) { 
     Mesures::create($request->all()); 
    } 
} 

しかし、値が空の場合は、私のデータベースに私が1900年1月1日を持っていると私はだけではなく、このデフォルト日付のNULLをしたいです。 どうすればいいですか?

javascriptでdate_analysesをnullに設定しようとしましたが、コントローラに送信しても動作しません...ありがとうございます!

+0

は 'date_analyses'は本当に空ですか? – darthsoup

+0

はい、date_analysesが空でない場合は、コントローラに送信する前にjavascriptで直接nullに設定しようとしましたが、同じ結果が表示されます – K4tn1x

答えて

1

私は解決策を見つけた:私のコントローラでは、Iを挿入するための要求を置く直前に:

if($request->DESMES_Date_Analyses==""){$request->offsetSet('DESMES_Date_Analyses', NULL);} 
1

データベーステーブルで、date_analysesにNULL値が渡されている間に1900-01-01が挿入されると思います。だからそれを一度チェックしてください。

+0

データベースでSQLを試すと、この列にNULLを挿入できます – K4tn1x

+0

テーブルのその列のフィールドタイプですか?デフォルト値が割り当てられていますか? –

+0

また、コントローラで、date_analyaysが空であることを確認します。このようなチェックdd($ this-> date_analysys) –

1

まず第一に、あなたがNULL可能にしたいテーブルのフィールドにnullable()を設定する必要があります。

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

考慮すべきいくつかのものが

  • フィールドがユニーク
  • ことができない、ということです

これが終わったら、保存する前にDESMES_Date_Analysesのパラメータを手動でチェックすることが重要です名前のような他のフィールドもあると言っています)。

....... 
$data = []; 
$data['name'] == $request->get('name'); 
if($date_analyses = $request->get('DESMES_Date_Analyses')) //i.e not null/empty 
{ 
    $data['DESMES_Date_Analyses'] = date_analyses;   
} 
Mesures::create($data); //so if date_analyses is not in the field it is saved as NULL 

これはDESMES_Date_Analysesが存在しない場合、クエリはDESMES_Date_Analysesを除外し、NULLにフィールドを設定することを意味します。クエリは次のようになりますことを意味:

insert into the_table ('name') values ('some name'); //excluding the field `DESMES_Date_Analyses` 
1

をあなたは空の値のNULL instateを渡すことができます。

注:列はNULL可能でなければなりません。

public function register(Request $request) { 

    $data = $request->input(); 

    if($data['DESMES_Date_Analyses'] == ''){ 
     $data['DESMES_Date_Analyses'] = NULL; 
    } 

    if($request->ajax()) { 
     Mesures::create($data); 
    } 
} 
関連する問題