Laravel 不更新列的空值
Laravel not updating null values to column
迁移
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设置为日期类型的列并且可以为空
当运行插入函数时,如下所示插入空值
$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);
在Table中,如下所示
如何让它像更新中的插入函数一样为空?
我的严格模式现在是 false,如果我把它设为 true,它会抛出 end_date 列无效数据的异常。
您有 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 数据库中的结束日期字段
中设置默认值
尝试替换
}else{
$update['end_date'] = 'NULL';
}
和
}else{
$update['end_date'] = null;
}
'NULL' 是一个字符串,而 null 是真正的 null。
首先将 table 字段设置为 nullable()
第二组table场DEFAULT to NULL
第三名:
$model->field = null;
迁移
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设置为日期类型的列并且可以为空
当运行插入函数时,如下所示插入空值
$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);
在Table中,如下所示
如何让它像更新中的插入函数一样为空? 我的严格模式现在是 false,如果我把它设为 true,它会抛出 end_date 列无效数据的异常。
您有 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 数据库中的结束日期字段
中设置默认值尝试替换
}else{
$update['end_date'] = 'NULL';
}
和
}else{
$update['end_date'] = null;
}
'NULL' 是一个字符串,而 null 是真正的 null。
首先将 table 字段设置为 nullable()
第二组table场DEFAULT to NULL
第三名:
$model->field = null;