镜像无法在laravel中的数据库中更新

时间:2018-12-14 05:13:57

标签: mysql laravel

我编写了更新图像的代码,当我上传新图像时它可以工作。但是,当我不上传图片时,它会以

的形式出现异常
  

违反完整性约束:1048“照片”列不能为空

我的查询

npm run install

我的控制器代码

   update student set photo = , updated_at = 2018-12-14 10:38:35.

4 个答案:

答案 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');
   }