Javascript 使用Ajax Laravel,当日期选择器为空时,在数据库中插入NULL

Javascript 使用Ajax Laravel,当日期选择器为空时,在数据库中插入NULL,javascript,ajax,database,laravel,datepicker,Javascript,Ajax,Database,Laravel,Datepicker,我使用laravel,在我看来,我有一个输入日期选择器,如下所示: {!! Form::text('DESMES_Date_Analyses',null ,['class' => 'form-control datepicker']) !!} var date_analyses = $(this).find("input[name=DESMES_Date_Analyses]").val(); 使用此代码: $('.datepicker').datepicker({ fo

我使用laravel,在我看来,我有一个输入日期选择器,如下所示:

{!! Form::text('DESMES_Date_Analyses',null ,['class' => 'form-control datepicker']) !!}
var date_analyses = $(this).find("input[name=DESMES_Date_Analyses]").val();
使用此代码:

$('.datepicker').datepicker({
        format: 'yyyy-mm-dd',
        todayHighlight: true,
        language : 'fr'
    });
我用这样的方法得到值:

{!! Form::text('DESMES_Date_Analyses',null ,['class' => 'form-control datepicker']) !!}
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_分析设置为null,然后将其发送到我的控制器,但它不起作用。。。谢谢大家!

我认为这是您的数据库表,它插入1900-01-01,而日期分析传递了空值。所以检查一下。

我想这是您的数据库表,它插入1900-01-01,同时为日期分析传递了一个空值。因此,请检查一次。

首先,您必须在要设置为null的表字段上设置
null()

$table->date('DESMES_Date_Analyses')->nullable();
有些事情要考虑的是,

  • 该字段不能是唯一的
在那之后(也许),一件重要的事情是在保存参数之前对参数进行一些手动检查(比如你还有其他字段,比如name)

这意味着如果不存在
DESMES\u Date\u analysis
,则查询将排除
DESMES\u Date\u analysis
,并将字段设置为NULL。这意味着查询可能如下所示:

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

首先也是最重要的一点是,必须在要使其可为null的表字段上设置
nullable()

$table->date('DESMES_Date_Analyses')->nullable();
有些事情要考虑的是,

  • 该字段不能是唯一的
在那之后(也许),一件重要的事情是在保存参数之前对参数进行一些手动检查(比如你还有其他字段,比如name)

这意味着如果不存在
DESMES\u Date\u analysis
,则查询将排除
DESMES\u Date\u analysis
,并将字段设置为NULL。这意味着查询可能如下所示:

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

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

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

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

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

您可以传递空值的
NULL
instate

注意:列必须可以为空


您可以传递空值的
NULL
instate

注意:列必须可以为空


“date_Analysis”真的为空吗?是的,如果date_Analysis不为空,我尝试在javascript中将其直接设置为null,然后将其发送到我的控制器,但我得到的相同结果是“date_Analysis”真的为空吗?是的,如果date_Analysis不为空,在将其发送到控制器之前,我尝试在javascript中将其直接设置为null,但结果相同。当我在数据库中尝试使用SQL时,我可以为该列插入null。表中该列的字段类型是什么?是否分配了任何默认值?同样在控制器中,使日期为空。像这样检查dd($this->date\u analysys)当我在数据库中尝试使用SQL时,我可以为该列插入NULL该列在表中的字段类型是什么?是否分配了任何默认值?同样在控制器中,使日期为空。像这样检查dd($this->date\u analysys)