2017-05-30 7 views
0

タイトルに記載されているように私はエラー"Property [id] does not exist on this collection instance."を取得します。ここでコードをオンラインで実行した場合のみ、関連コードが表示されます。Laravel Error:このコレクションインスタンスに[id]プロパティが存在しません。それでもローカルサーバーで動作します

1-EmployeeController(ブラウザがエラーがここに二行目であることを私に伝えます)

public function show(Employee $employee) 
{ 
    $employee = Employee::find ($employee); 
    $edocument = EDocument::where ('employee_id',$employee->id)->first(); 
    return view ('employee.show')->withEmployee($employee)->withEdocument($edocument); 
} 

2-show.blade.php

<div class="jumbotron"> 
<h1>{{$employee->name}} ({{$employee->position}})</h1> 
@if (isset($edocument)) 
    <a href="{{route('employee-docs.show',$edocument->id)}}" class="btn btn-lg btn-primary">Go To Employee Database Page</a> 
@else 
    <p class="lead bg-danger">Employee documents are not uploaded</p> 
@endif 
<a href="{{route('getContract',$employee->id)}}" class="btn btn-success btn-lg">Create Employee Contract </a> 

誰に説明することができた場合私はこのエラーも詳細には素晴らしいだろう。おかげ

は、ps。これは私の最初のlaravelプロジェクト(ある;。多分これはあなたを助けることができるのはなぜあなたが使用してコントローラに情報を渡さない

答えて

0

コントローラメソッドでは、Employeeモデルを取得するためにルートモデルバインディングを使用しますが、findも実行します。これは、通過してから失敗することになります(show.blade .phpで何も変更する必要はありません)。代わりにモデルo f id。以下に示すコードの1つとして行い、それらを混ぜてはいけません。

ルートモデルバインディングを使用する場合は、これを実行します。

public function show(Employee $employee) 
{ 
    $edocument = EDocument::where ('employee_id', $employee->id)->first(); 

    return view ('employee.show')->with(compact('employee', 'edocument')); 
} 

従業員IDを渡してコントローラでモデルを取得する場合は、これを行います。

public function show($employee) 
{ 
    $employee = Employee::find($employee); 
    $edocument = EDocument::where ('employee_id', $employee->id)->first(); 

    return view ('employee.show')->with(compact('employee', 'edocument')); 
} 
+0

ありがとうございました。うん、私はそれをやったし、それは働いた...私はコードが何らかの理由で奇妙だったローカルで働いたので、私はそのエラーに気付かなかったと思います。 –

0

-

return view('employee.show', ['employee' => $employee, 'edocument'=>$edocument]); 

をそれは私のために働きました

関連する問題