我有one to many
关系,需要显示使用where条件。
当我使用findOrFail()
时,它也可以正常工作。
$foo = Model::findOrFail(1);
在我的模板刀片上
@foreach($foo->bars as $index=>$bar)
{{ $bar->name }}
@endforeach
在我上面的代码中,它正在工作。但是对id
的引用并不是我所需要的。
我需要使用where条件。像这样:
$foo = Model::where('conditon', 1)->get();
然后我在刀片模板上使用
@foreach($foo->bars as $index=>$bar)
{{ $bar->name }}
@endforeach
然后我得到一个错误:
ErrorException(E_ERROR)属性[bars]在此集合实例上不存在。
在get()
之后,我无法用child
呼叫$foo->bars
您如何使它工作?
答案 0 :(得分:1)
尝试使用->first()
代替->get()
。
答案 1 :(得分:1)
因为->get()
检索了多个符合查询条件的结果。
您可以循环浏览$foo
个结果,也可以使用->first()
检索第一个查询匹配项。
答案 2 :(得分:1)
findOrFail()方法返回“模型”的实例。 即使只有一个结果,get()方法也会返回“模型”实例的集合。
如果只需要一个结果,请使用first()而不是get()。
$foo = Model::where('conditon', 1)->first();
然后在刀片模板中执行
@if($foo)
@foreach($foo->bars as $index=>$bar)
{{ $bar->name }}
@endforeach
@endif
如果需要多个结果,请执行另一个foreach()。
@foreach($foo as $oneFoo)
@foreach($oneFoo->bars as $index=>$bar)
{{ $bar->name }}
@endforeach
@endforeach
如果要使用“多个”解决方案,建议您将变量命名为“ foos”。
$foos = Model::where('conditon', 1)->get();
等等
@foreach($foos as $foo)
@foreach($foo->bars as $index=>$bar)
{{ $bar->name }}
@endforeach
@endforeach