Php Laravel错误:此集合实例上不存在属性[id]。但它在本地服务器上工作

Php Laravel错误:此集合实例上不存在属性[id]。但它在本地服务器上工作,php,laravel,collections,eloquent,Php,Laravel,Collections,Eloquent,如标题中所述,我收到错误“此集合实例上不存在属性[id]”。只有在联机运行代码时,这里才是我的相关代码 1-EmployeeController(浏览器告诉我错误在第二行) 2-show.blade.php <div class="jumbotron"> <h1>{{$employee->name}} ({{$employee->position}})</h1> @if (isset($edocument)) <a href="{{r

如标题中所述,我收到错误“此集合实例上不存在属性[id]”。只有在联机运行代码时,这里才是我的相关代码

1-EmployeeController(浏览器告诉我错误在第二行)

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>

{{$employee->name}({{$employee->position})
@如果(isset($edocument))
@否则
员工文档未上传

@恩迪夫

如果有人能更详细地向我解释这个错误,那也太好了。谢谢


附言。。这是我的第一个laravel项目(;

也许这可以帮助你。你为什么不使用-

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

它对我起了作用。(不必在show.blade.php中更改任何内容)

您可以在控制器方法中使用路由模型绑定来获取
员工
模型。但是您还可以运行
查找
,这将失败,因为您传递的是模型而不是id。请按照下面显示的代码之一进行操作,不要混合使用它们

如果要使用路由模型绑定,请执行此操作

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

    return view ('employee.show')->with(compact('employee', 'edocument'));
}
如果要传递员工id并在controller中获取模型,请执行此操作

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

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

谢谢。是的,我这样做了,它工作了……我想我没有注意到那个错误,因为代码在本地工作,这很奇怪。
public function show($employee)
{
    $employee = Employee::find($employee);
    $edocument = EDocument::where ('employee_id', $employee->id)->first();

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