迁移
Schema::create('users', function (Blueprint $table) {
$table->increments('user_id');
$table->string('username',50)->unique();
$table->date('start_date');
$table->date('end_date')->nullable();
$table->timestamps();
});
在此处将start_date设置为列类型date并且可以为空
运行如下所示的Insert函数时,将其插入空值
$insert = [
'username' =>strtoupper(request('username')),
'password' =>Hash::make(request('password')),
'start_date' =>date('Y-m-d',strtotime(request('start_date'))),
];
if(request()->filled('end_date')){
$insert['end_date'] = date('Y-m-d',strtotime(request('end_date')));
}
User::create($insert);
更新同一行时,将其保留为end_date输入,
$user = User::GetWithEncrypted(request('user_id'));
$update ['start_date'] = date('Y-m-d',strtotime(request('start_date')));
if(request()->filled('end_date')){
$update['end_date'] = date('Y-m-d',strtotime(request('end_date')));
}else{
$update['end_date'] = 'NULL';
}
$user->update($update);
如何像更新中的插入函数一样使它为NULL? 我的严格模式现在为false,如果将其设置为true,它将为end_date列抛出无效数据异常。
答案 0 :(得分:2)
尝试更换
}else{
$update['end_date'] = 'NULL';
}
使用
}else{
$update['end_date'] = null;
}
'NULL'是一个字符串,而null是真正的null。
答案 1 :(得分:0)
您有2个解决此问题的方法:
1。
$user = User::GetWithEncrypted(request('user_id'));
$update ['start_date'] = date('Y-m-d',strtotime(request('start_date')));
if(request()->filled('end_date')){
$update['end_date'] = date('Y-m-d',strtotime(request('end_date')));
}else{
$update['end_date'] = '".date('00:00:00')."';
}
$user->update($update);
2。 您必须在mysql数据库的结束日期字段中设置默认值
答案 2 :(得分:0)
首先将表格字段设置为 nullable()
第二组表字段DEFAULT to NULL
第三:
$model->field = null;