【问题标题】:One to one relationship while doing CRUD (create part)进行 CRUD(创建零件)时的一对一关系
【发布时间】:2017-10-24 04:27:20
【问题描述】:

我在与 user_info 表和 userImage 表建立一对一关系时遇到了一些麻烦。当我尝试上传我的图像时,它没有保存到我的数据库中,它的 user_id 为 0。我过去成功地建立了一对多和一对一的关系,但没有与 CRUD 一起使用。谁能帮我?最好给我一些例子,让我参考或建议我应该做什么。提前致谢

这是我当前的代码: 创建控制器:

public function create1(){

    return view('create1');
}

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($request->hasFile('input_img')) {

$file = $request->file('input_img');

$fileName = $file->getClientOriginalName();
        $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() ;

    return redirect('/home');
}

HomeController(这是我打印信息的地方)

public function getInfo($id) {

  $data = personal_info::where('id',$id)->get();
      $data3=UserImage::where('user_id',$id)->get();
 return view('test',compact('data','data3'));

blade.php(我如何在视图中显示图像)

 @foreach ($data3 as $object9)
 <img width="100" height="100" src="{!! $object9->userImage!!}">
    @endforeach

UserImage 模型(表中我使用二进制格式存储在 DB 中)

    class UserImage extends Eloquent
    {
            protected $fillable = array('userImage','user_id');
        public function user_infos() {
            return $this->belongsTo('App\user_info', 'user_id', 'id');
        }

class user_info extends Eloquent
{
    protected $fillable = array('Email', 'Name');
    protected $table = user_infos';
    protected $primaryKey = 'id';
        public function UserImages() {
        return $this->hasOne('App\UserImage','user_id');
    }
}

create1.blade.php(这是我上传图片的方式)

     <form class="form-horizontal" method="post" action="{{ url('/userUpload')}}" enctype="multipart/form-data">

                        {{  csrf_field()  }}


<div class="form-group">
    <label for="imageInput" class="control-label col-sm-3">Upload Image</label>
            <div class="col-sm-9">
            <input data-preview="#preview" name="input_img" type="file" id="imageInput">
            <img class="col-sm-6" id="preview"  src="" ></img>
        </div>
    </div>

 <div class="form-group">
            <div class="col-md-6-offset-2">
              <input type="submit" class="btn btn-primary" value="Save">
            </div>
          </div>
          </form>

【问题讨论】:

    标签: php laravel crud one-to-one


    【解决方案1】:

    您需要查看Laravel relations 以清理该代码并简化许多步骤。

    改变这一行

    $UserImage->user_infos()->associate($user_info);
    

    为此

    $UserImage->user_id = $user_info;
    

    请记住,您在该方法中覆盖了 $UserImage 的值。

    【讨论】:

    • 嗨 Lloople,感谢您的回复,但您能告诉我更多关于我做错的部分吗?因为更改为您的代码后,保存到数据库中的图像是空白的,user_id 也是如此
    猜你喜欢
    • 1970-01-01
    • 2021-05-27
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多