我尝试在Laravel 5.1中使用刀片显示嵌套数组,但我不能这样做:
控制器:
public function track($id){
$tracks = track::with('trials.samples')->where('trials_id',$id)->get();
//return $tracks;
return view('Tracks.index',compact('tracks'));
}
Traks.index:
{{ $track['samples']['variety'] }}
返回$ track返回:
[{" ID":1," trials_id":1,"日期":"二〇一五年十二月十六日",& #34;注释":" \ u0646 \ u062a \ u06cc \ u062c \ u0647 \ u062e \ u0627 \ u0635 \ u0662 \ u0626 \ u062f \ u0627 \ u0634 \ u062a \ u0647 !"," created_at":" -0001-11-30 00:00:00"," updated_at":" -0001- 11-30 00:00:00""试验" {" ID":1," persons_id":1," samples_id&#34 ;: 1,"量":" 125000""日期":" 2015年12月9日""注释" :"""代码":" 5CEPY"" created_at":" 2015年12月8日 06:46:58""的updated_at":" 2015年12月8日 06:46:58""样品" {" ID":1,"各种":" keyhan"&# 34; supplier_id":1," lot_number":" 2550""日期":" 2015年12月11日",& #34;量":125000," UNIT_ID":1," technical_fact":" \ u0641 \ u0646 \ u06cc""注释&# 34;:" 1"" file_address":""" CATEGORY_ID":1," created_at&#34 ;: " 2015年12月8日 06:46:34"," updated_at":" 2015-12-08 06:46:34"}}}}
我也尝试了这个代码,但没有显示任何内容:
{{ $track['trials.samples']['variety'] }}
{{ $track->samples['variety'] }}
答案 0 :(得分:1)
首先,我从未使用compact()
将任何内容返回给视图,所以我不熟悉它的用法。
但是,您可以使用with()
将内容返回到视图,因此如果您将该行更改为:
return view('Tracks.index')->with(["tracks" => $tracks]);
然后,您可以使用@foreach
循环在刀片中显示它们,或使用$tracks[0]...
访问第一个元素。例如:
@foreach($tracks AS $track)
{{ $track->comments }}
@foreach($track->trials AS $trial)
{{ $trial->code }}
@foreach($trial->samples AS $sample)
{{ $sample->variety }}
@endforeach
@endforeach
@endforeach
请注意,这取决于您在Track
,Trial
和Sample
模型中设置关系的方式。例如:
public function trials(){
return $this->hasMany("App\Trial")->get();
// vs
return $this->hasOne("App\Trial")->first();
}
如果是->get()
,您必须使用@foreach
语法来访问它,但如果您只想要一个结果,则只需使用:
{{ $track->trials->samples->variety }}
如果您需要更多信息,请查看Laravel的文档:Blade Documentation和Eloquent Collections