Php 试图获得财产';id';laravel 5.6中非对象的定义

Php 试图获得财产';id';laravel 5.6中非对象的定义,php,laravel,object,Php,Laravel,Object,你好,我想知道我做错了什么,我得到了这个错误这里是我的控制器和视图 $invoice_specs = invoice::find($id); $view=view('admin.invoices.pdf',compact('invoice_specs',$invoice_specs)); 这就是我的观点 <table class="table "> <thead> <tr>

你好,我想知道我做错了什么,我得到了这个错误这里是我的控制器和视图

$invoice_specs = invoice::find($id);
$view=view('admin.invoices.pdf',compact('invoice_specs',$invoice_specs));
这就是我的观点

    <table class="table ">
                <thead>
                <tr>
                    <th>id</th>
                    <th>name</th>
                    <th>description</th>
                </tr>
                </thead>
                <tbody>
                @foreach($invoice_specs as $invoice_spec)
                    <tr>
                        <td>{{$invoice_spec->id}}</td>
                        <td>{{$invoice_spec->title}}</td>
                        <td>{{$invoice_spec->description}}</td>
                    </tr>
                @endforeach
                </tbody>
            </table>

问题在于,为从数据库检索数据而调用的静态find方法只返回单个模型,而不是集合。因此,在您看来,当您尝试将foreach与变量
$invoice\u specs
一起使用时,它实际上不会在模型集合中循环

在中,您可以看到
find
first
方法只返回一个模型,您无法将其用于foreach循环

说明如何检索模型以及如何使用模型。我建议你先读一读:)


因此,当前如果要显示单个模型,可以做的是在视图中去掉
foreach
循环,并在控制器中将变量
invoice\u specs
重命名为
invoice\u spec

问题在于,您调用的静态find方法从数据库检索数据,仅返回单个模型,不返回集合。因此,在您看来,当您尝试将foreach与变量
$invoice\u specs
一起使用时,它实际上不会在模型集合中循环

在中,您可以看到
find
first
方法只返回一个模型,您无法将其用于foreach循环

说明如何检索模型以及如何使用模型。我建议你先读一读:)


因此,当前,如果要显示单个模型,可以做的是在视图中去掉
foreach
循环,并且在控制器中,您应该将变量
invoice\u specs
重命名为
invoice\u spec

您的
invoice\u specs
是单个模型,您可能不想使用
foreach
对其进行迭代,您可以直接尝试访问
invoice\u specs
上的
id
属性

但是,您似乎想要查找多个发票,但您使用的是
find()
通过
primary key
查找,在这种情况下,您只能得到一个或没有结果


请澄清您的问题。

您的
发票规格
是一个单一型号,您可能不想使用
foreach
对其进行迭代,您只需尝试直接访问
发票规格
上的
id
属性即可

但是,您似乎想要查找多个发票,但您使用的是
find()
通过
primary key
查找,在这种情况下,您只能得到一个或没有结果


请为您的问题提供更清晰的说明。

您不应该在这里重复结果。您应该在HTML中这样做

<table class="table ">
 <thead>
  <tr>
     <th>id</th>
     <th>name</th>
     <th>description</th>
  </tr>
 </thead>
 <tbody>
  <tr>
     <td>{{$invoice_specs->id}}</td>
     <td>{{$invoice_specs->title}}</td>
     <td>{{$invoice_specs->description}}</td>
  </tr>
 </tbody>
</table>

身份证件
名称
描述
{{$invoice_specs->id}
{{$invoice_specs->title}
{{$invoice_specs->description}

您不应在此处迭代结果。您应该在HTML中这样做

<table class="table ">
 <thead>
  <tr>
     <th>id</th>
     <th>name</th>
     <th>description</th>
  </tr>
 </thead>
 <tbody>
  <tr>
     <td>{{$invoice_specs->id}}</td>
     <td>{{$invoice_specs->title}}</td>
     <td>{{$invoice_specs->description}}</td>
  </tr>
 </tbody>
</table>

身份证件
名称
描述
{{$invoice_specs->id}
{{$invoice_specs->title}
{{$invoice_specs->description}

不要在那里使用
foreach
循环,它不是一个集合。 直接使用
$invoice\u spec->id
。就这样


我们使用
foreach
forelse
作为集合。

不要在那里使用
foreach
循环,它不是集合。 直接使用
$invoice\u spec->id
。就这样


我们使用
foreach
forelse
进行收藏。

我建议不要使用
find($id)
而使用
findOrFail($id)
作为一般经验法则,我建议不要使用
find($id)
而使用
findOrFail($id)
作为一般经验法则