Вызов функции-члена getClientOriginalName () для массива laravel

Я пытаюсь опубликовать изображение отношения один ко многим, в то же время делая CRUD (создать деталь), но у меня возникают некоторые проблемы с этим. Я продолжаю получать эту ошибку,Call to a member function getClientOriginalName() on arrayвсякий раз, когда я пытаюсь использовать ассоциацию, чтобы определить отношения вместе с user_info с таблицей user_image. И что же мне делать?

Вот мои коды:
createController:

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($file = $request->hasFile('input_img')) {
$file = array();$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->signature !!}">
@endforeach

Модель UserImage (в таблице я использовал бинарный формат для хранения в БД)

    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>

0

Решение

Я думаю, что у вас есть проблемы внутри store1() метод. Вы не должны повторно объявить $file,

if($file = $request->hasFile('input_img')) {

$file = array();

$fileName = $file->getClientOriginalName();

Вместо этого получите файл, используя file() метод:

if($request->hasFile('input_img')) {

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

$fileName = $file->getClientOriginalName();

Смотрите больше на Документация запросов Ларавела.

1

Другие решения

Прочитайте свою логику в store1 метод снова … Вы устанавливаете $file переменная в пустой массив, а затем пытается вызвать getClientOriginalName() метод на это:

$file = array();

$fileName = $file->getClientOriginalName();
0

По вопросам рекламы [email protected]