具有一对一关系和图像上载laravel的CRUD示例

I am having trouble understanding and knowing how to create a one to one relationship with CRUD and file upload together, is it possible to give me a simple example on how to do it? Because when I tried to do it, for some reason my id and user_id doesn't match at all

Example, in user_info table (jack with id 1) has one userImage table(image uploaded with a user_id = 1).

This is the part that I am having trouble with in my controller:

public function store1(Request $request){
     $this->validate($request, [
        'input_img' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
    ]);

   $user_info = Session::get('data');
      $UserImage = new UserImage($request->input()) ;


         if($file = $request->hasFile('input_img')) {
            $file = $request->file('input_img');
            $fileName = $file->getClientOriginalExtension() ;
            $destinationPath = public_path().'/images' ;
            $file->move($destinationPath,$fileName);
            $UserImage->userImage = $fileName ;
            $UserImage = UserImage::create(['file' => $request->file('input_img')]);
            $UserImage->user_infos()->associate($user_info);
        }

        $UserImage->save() ;
        //dd($UserImage);

        return redirect('/home');
    }

Sample of one to one relationship. I wish it can help you.

Example of table of Column of user table:

  • id
  • name
  • email
  • password

Example of table of Column of userimage table:

  • id
  • user_id
  • image_link
  • uploaded

User Model

public function userImage()
{
    return $this->hasOne(App\UserImage::class);
}

UserImage Model

public function user()
{
    return $this->hasOne(App\User::class);
}

CRUD in controller

public function store(Request $request)
{
        $user = new App\User;
        $user->name = $request->name;
        $user->email = $request->email;
        $user->password = $request->password;
        $user->save();
        $user->userImage->create([
                'image_link'         => $request->image,
                'uploaded'         => $request->date,
            ]);
        return back();
}

public function update(Request $request, $id)
{
        $user = App\User::find($id);
        $user->name = $request->name;
        $user->email = $request->email;
        $user->password = $request->password;
        $user->save();

        $user->userImage->image_link = $request->image;
        $user->userImage->uploaded = $request->date;
        $user->userImage->save();

        return back();
}

public function destroy($id)
{
        $user = App\User::find($id)->delete();

        return back();

}

Create a foreign key in your user_info table referencing userImage table. Create unique constraint on the foreign key.