如何在Laravel 5.1中使用刀片显示嵌套数组

时间:2015-12-08 19:52:58

标签: php laravel laravel-5.1 blade

我尝试在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'] }} 

1 个答案:

答案 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

请注意,这取决于您在TrackTrialSample模型中设置关系的方式。例如:

public function trials(){
  return $this->hasMany("App\Trial")->get();
  // vs 
  return $this->hasOne("App\Trial")->first();
}

如果是->get(),您必须使用@foreach语法来访问它,但如果您只想要一个结果,则只需使用:

{{ $track->trials->samples->variety }}

如果您需要更多信息,请查看Laravel的文档:Blade DocumentationEloquent Collections