使用Ajax Laravel时,当datepicker为空时,在DB中插入NULL

时间:2017-02-15 10:56:45

标签: javascript ajax database laravel datepicker

我使用laravel,在我看来,我有一个像这样的输入日期选择器:

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

使用此代码:

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

我用这样的东西得到了价值:

var date_analyses = $(this).find("input[name=DESMES_Date_Analyses]").val();

之后我在数据库中插入带有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-01-01,我只想要NULL而不是这个默认日期。 我怎么能这样做?

我试着在javascript中将date_analyses设置为null,然后再将它发送到我的控制器但它不起作用......谢谢!

4 个答案:

答案 0 :(得分:1)

我认为这是您的数据库表,在date_analyses传递空值时会插入1900-01-01。所以检查一次。

答案 1 :(得分:1)

首先,您必须在要使其可为空的表格字段上设置nullable()

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

要考虑的一些事情是,

  • 该字段不能是唯一的

在那之后(也许),一件重要的事情就是在保存之前对你的DESMES_Date_Analyses param进行一些人工检查(并说你还有其他字段,如名字。)。

.......
$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`

答案 2 :(得分:1)

我找到了解决方案:在我的控制器中,就在插入请求之前,我把:

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

答案 3 :(得分:1)

您可以传递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);
    }
}