Laravel 显示具有关系的有说服力的集合中的数据
我试图从一个有说服力的查询中获得如下数据:Laravel 显示具有关系的有说服力的集合中的数据,laravel,laravel-5,eloquent,blade,laravel-5.2,Laravel,Laravel 5,Eloquent,Blade,Laravel 5.2,我试图从一个有说服力的查询中获得如下数据: $submission->find($id)->first()->with('user','clientform')->get() 我将提交内容发送到视图,并尝试从用户模型访问属性,如下所示: {{ $submission->clientform->name }} 但是,Laravel抛出以下错误: Undefined property: Illuminate\Database\Eloquent\Collection::$clientfo
$submission->find($id)->first()->with('user','clientform')->get()代码>
我将提交内容发送到视图,并尝试从用户
模型访问属性,如下所示:
{{ $submission->clientform->name }}
但是,Laravel抛出以下错误:
Undefined property: Illuminate\Database\Eloquent\Collection::$clientform
我的查询格式有什么问题吗?你做得太过分了
让我们把它分解一下:
$submission->find($id);
将返回与主键为$id
的条目相对应的模型实例
$submission->find($id)->first();
这是不必要的重复;find
方法已经为您提供了一个条目,无需首先调用
$submission->find($id)->first()->with('user', 'clientform');
这就是你开始走错方向的地方;在模型上调用时,Laravel将再次将该模型转换为查询生成器,即使它已通过调用find
解决
$submission->find($id)->first()->with('user', 'clientform')->get();
最后,get
方法将构建器解析为一个illumb\Support\Collection
,而不管找到的条目数是多少(即,它可以是一个只有一个项的集合)。不过,值得注意的是,您的查询很可能已通过调用完全重置。这与实例化一个新的提交
模型并用它构建查询是一样的。这意味着您可能正在使用所有提交条目的集合,而不仅仅是带有$id
的条目
$submission->find($id)->first();
长话短说,这就是你想要的:
$submission->with('user', 'clientform')->find($id);
它将获取匹配的$id
,并加载用户
和客户端表单
关系。感谢您的简要解释!这解决了我所有的问题。