2017-10-24 39 views
0

CRUD(パーツの作成)を行っている間に、1対多の関係から画像を投稿しようとしていますが、何か問題があります。私はこのエラー,Call to a member function getClientOriginalName() on arrayを取得しています。私は、関連付けを使用してuser_imageとuser_imageテーブルの関係を定義しようとするたびに続けます。だから何をすべきか?ここで 配列関数のgetClientOriginalName()を呼び出します。配列laravel

は私のコードです: 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モデル(表Iではバイナリ形式を使用して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は...あなたは空の配列に$file変数を設定している

 <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

どのファイルのどの行にエラーが表示されますか? – Camilo

+0

私はこの行に "$ fileName = $ file-> getClientOriginalName();" – blastme

答えて

1

私はあなたが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(); 

Laravel's requests documentationの詳細を参照してください。

+0

こんにちはCamilo、返信用のtks、私は今、代わりにこのエラーを取得しています、 "booleanでgetClientOriginalName()メンバ関数を呼び出す"、任意のアイデア? – blastme

+0

はい、 '$ request-> input_img'または' $ request-> file( 'input_img') 'を呼び出してアップロードしたファイルを取得する必要があります。私の答えを更新する。 – Camilo

+0

こんにちは、カミロあなたの答えが働いた!多くのことを突然それはデータベースに保存することができませんでした – blastme

0

再びstore1方法であなたのロジックを通して読む(これは私が画像をアップロードする方法です)そして、それにgetClientOriginalName()メソッドを呼び出ししようとしている:

$file = array(); 

$fileName = $file->getClientOriginalName(); 
関連する問題