我编写了更新图像的代码,当我上传新图像时它可以工作。但是,当我不上传图片时,它会以
的形式出现异常违反完整性约束:1048“照片”列不能为空
我的查询
npm run install
我的控制器代码
update student set photo = , updated_at = 2018-12-14 10:38:35.
答案 0 :(得分:1)
在if条件之外删除$user->photo=$req->input('image');
,并在数据库映像字段中将null设置为true并将其默认设置为null。
function updatedata(Request $req)
{
//dd($req->input());
$user = User::find($req->input('userid'));
if ($req->hasFile('image')) {
$image = $req->file('image');
$filename = time() . '.' . $image->getClientOriginalExtension();
$location = public_path('/' . $filename);
Image::make($image)->resize(100, 100)->save($location);
$oldfilename = $user->photo;
Storage::delete($oldfilename);
$input['photo'] = $filename;
}
else {
$input['photo'] = $user->photo;
}
$input['name'] = $req->input('name');
$input['address'] = $req->input('address');
$updateUser = User::where('id', $req->input('userid'))->update($input);
return redirect()->route('show');
}
答案 1 :(得分:0)
似乎您在“照片”列中没有添加非空约束。因此,将其删除并为其设置默认图像路径。
答案 2 :(得分:0)
设置未上传图片的默认图片路径
if($req->hasFile('image'))
{
$image=$req->file('image');
$filename=time().'.'.$image->getClientOriginalExtension();
$location=public_path('/'.$filename);
Image::make($image)->resize(100,100)->save($location);
$oldfilename=$user->photo;
$user->photo=$filename;
Storage::delete($oldfilename);
}else {
$user->photo = "set/to/default/path/image.jpg";
}
否则,更新用户表迁移如下所示,然后再次迁移
$table->string('photo')->nullable();
答案 3 :(得分:0)
您应该尝试以下操作:
function updatedata(Request $req)
{
//dd($req->input());
$user=User::find($req->input('userid'));
$user->name=$req->input('name');
$user->address=$req->input('address');
if($req->hasFile('image'))
{
$image=$req->file('image');
$filename=time().'.'.$image->getClientOriginalExtension();
$location=public_path('/'.$filename);
Image::make($image)->resize(100,100)->save($location);
$oldfilename=$user->photo;
$user->photo=$filename;
Storage::delete($oldfilename);
$user->photo=$req->input('image');
} else {
$user->photo="notAvailable.jpg";
}
$user->save();
return redirect()->route('show');
}