我使用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,然后再将它发送到我的控制器但它不起作用......谢谢!
答案 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);
}
}