laravellaravel-backpacklaravel-backpack-5

How to upload file in relationship hasOn<->belongsTo Laravel Backpack


Can be possible to store a file uploaded to a related table? Scenario: I have a usres table in database and another one pictures. Users Model have the following function

public function picture()
    {
        return $this->hasOne(Picture::class);
    }

And the Picture Model have the following function.

public function user_picture()
    {
        return $this->belongsTo(User::class, 'user_id', 'id');
    }

Is possible to store the picture in pictures database table (id, user_id, img_path) from the UserCrudController store() function?


Solution

  • I resolved the issue with the following steps. As per Laravel Backpack I added the input field in the Blade:

    @include('crud::fields.upload', ['crud' => $crud, 'field' => ['name' => 'img1', 'label' => 'Image 1', 'type' => 'upload', 'upload'=> true, 'disk'=>'uploads', 'attributes' => ['id' => 'img1', 'capture' => 'user']]])
    

    After this I added the function in the User Controller as follow:

    $request->validate(['img1' => 'mimes:jpg,png,jpeg|max:5120']);
    $fileModel = new Picture;
          if($request->file()) {
               $fileName1 = time().'_'.$request->img1->getClientOriginalName();
               $filePath1 = $request->file('img1')->storeAs('uploads', $fileName1, 'public');
    $fileModel->name = time().'_'.$request->img1->getClientOriginalName();
    $fileModel->img1 = '/storage/' . $filePath1;
    $fileModel->save();
    }
    

    With these lines of code I was able to store the related Picture with the User.

    Thank you all for the guidelines.