【发布时间】:2017-12-05 07:24:06
【问题描述】:
我正在尝试将图像提交到数据库中,但我不断收到此错误:Type error: Argument 1 passed to Illuminate\Database\Eloquent\Relations\HasOneOrMany::save() must be an instance of Illuminate\Database\Eloquent\Model, null given, called in C:\xampp\htdocs\Evaluation\app\Http\Controllers\ImageController.php on line 24.
我检查了 StackOverflow 中的其他问题,大多数情况下他们说这是保存部分的错,他们在其中放置了类似 $post 的内容,但我已经检查过,没有任何问题。这段关系似乎也没有任何问题,但为什么它仍然不起作用?当我上传图片时,该错误也会返回 null。 null 在这里的部分返回,$UserImage = $request->input('UserImage'); 那么我的问题可能出在image1.blade.php 上吗?
图像控制器:
public function test(personal_info $user){
return view('image1',compact('user'));
}
public function test1(Request $request){
$UserImage = new Image;
$personal_info = new personal_info;
$UserImage = $request->input('UserImage');
$id = $request->user_id;
$id = personal_info::find($id);
$id->Images()->save($UserImage);
return redirect('/summary');
}
image1.blade.php(我提交表单的地方)
<form class="form-horizontal" method="post" action="{{ url('/Upload')}}" enctype="multipart/form-data">
{{ csrf_field() }}
<input type="hidden" name="user_id" value="{{$user->id}}">
<div class="form-group">
<label for="imageInput" class="control-label col-sm-3">Upload Image</label>
<div class="col-sm-9">
<input type="file" name="UserImage">
</div>
</div>
<div class="form-group">
<div class="col-md-6-offset-2" style="padding-left: 30px">
<input type="submit" class="btn btn-primary" value="Save">
</div>
</div>
</form>
Image.php:
public function personal_infos() {
return $this->belongsTo('App\personal_info', 'user_id', 'id');
}
personal_info.php:
public function Images() {
return $this->hasOne('App\Image','user_id');
}
【问题讨论】:
-
为什么你认为上传的文件是 Eloquent 模型?
-
我需要图像有一个 id(类似于用户个人资料图片)为什么我使用 eloquent,我已经在模型中定义了关系,正如您在我刚刚更新的问题中看到的那样
-
但是为什么你认为来自请求的输入应该是一个文件是一个 Eloquent 模型?当您将其传递给
save时,您将其视为一个,因为 save 需要一个模型。 -
那我该怎么办?我已经做这样的事情有一段时间了,但从来没有遇到过这种错误。对不起,我的口才不太好,因为我很少用它
-
首先,将图像保存到数据库是愚蠢的......你知道服务文件意味着什么吗?你的网络服务器不是你的数据库......你需要停止你正在做的事情并开始弄清楚所有这些变量实际上是什么