Laravel 5.5 雄辩的一对多不能使用 get() 工作



我有one to many关系,需要显示使用位置条件。

当我使用findOrFail()时,它也可以工作。

$foo = Model::findOrFail(1);

在我的模板边栏选项卡上

@foreach($foo->bars as $index=>$bar)
{{ $bar->name }}
@endforeach

在我上面的代码上,它正在工作。 但是对id的引用,这不是我需要的。

我需要它使用条件。 像这样:

$foo = Model::where('conditon', 1)->get();

然后我在我的刀片模板上调用它

@foreach($foo->bars as $index=>$bar)
{{ $bar->name }}
@endforeach

然后我得到一个错误:

错误异常 (E_ERROR( 属性 [bars] 在此集合实例上不存在。

似乎在get()之后我不能用$foo->bars打电话给child

你如何让它工作?

findOrFail(( 方法返回 "Model" 的实例。 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

尝试使用->first()而不是->get()

因为->get()检索符合查询条件的多个结果。

可以循环遍历$foo结果,也可以使用->first()检索第一个查询匹配项。

相关内容

  • 没有找到相关文章

最新更新