当使用 Ajax Laravel 的 datepicker 为空时在 DB 中插入 NULL
Posted
技术标签:
【中文标题】当使用 Ajax Laravel 的 datepicker 为空时在 DB 中插入 NULL【英文标题】:Insert NULL in DB when datepicker is empty with Ajax Laravel 【发布时间】:2017-07-03 23:53:35 【问题描述】:我使用 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_analysiss 设置为 null,但它不起作用...谢谢!
【问题讨论】:
'date_analysiss' 真的是空的吗? 是的,如果 date_analysiss 不为空,我尝试在将其发送到我的控制器之前直接在 javascript 中将其设置为 null,但结果相同 【参考方案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);
【讨论】:
【参考方案2】:我找到了解决方案:在我的控制器中,就在插入请求之前:
if($request->DESMES_Date_Analyses=="")$request->offsetSet('DESMES_Date_Analyses', NULL);
【讨论】:
【参考方案3】:首先,您必须在要设为可空的表字段上设置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`
【讨论】:
【参考方案4】:我认为这是您的数据库表,它插入了 1900-01-01,而为 date_analysiss 传递了一个空值。所以检查一次。
【讨论】:
当我在我的数据库中尝试使用 SQL 时,我可以为此列插入 NULL 表中该列的字段类型是什么?它是否分配了任何默认值? 同样在控制器中,使 date_analyays 为空。像这样检查 dd($this->date_analysys)以上是关于当使用 Ajax Laravel 的 datepicker 为空时在 DB 中插入 NULL的主要内容,如果未能解决你的问题,请参考以下文章
当通过 Ajax 将数据发送到 Laravel 中的控制器时,数据为空
当 Ajax 响应来自使用 select2 的 laravel 控制器时,如何检查 JQuery 附加选项中的条件?
当通过Ajax进行POST时,Laravel 5.6 CSRF令牌失败