2016-12-10 40 views
0

我创建了一个像往常一样的控制器,并计划传递数据来查看和显示,但我不知道为什么数据无法显示,我使用DD($状态)显示数组传递正确的数据。但是当我改变查看数据消失时,任何人都知道这里有什么问题?数据无法显示在laravel查看5.2

这是我的看法

<div class="col-lg-5"> 
    @if(!$statuses->count()) 
     <p>There is no status here</p> 
    @else 
     @foreach($statuses as $status) 
      <p>{{ $status->body }}</p> 
     @endforeach 
    @endif 
</div> 

我控制器

$statuses=Status::where(function($query){ 
      return $query->where('user_id',Auth::user()->id); 
       //->orWhereIn('user_id',Auth::user()->friends()->lists('id')); 
     }) 
      ->orderBy('created_at','desc'); 

     return view('profile.testing') 
      ->with('statuses',$statuses); 

下面的代码是用来检查数据是否已经通过。结果是阵列与我的正确数据,所以意味着我的数据已通过,但不知道为什么它不能显示在视图中。

$statuses=Status::where(function($query){ 
      return $query->where('user_id',Auth::user()->id); 

     }) 
      ->orderBy('created_at','desc') 
      ->get(); 
     dd($statuses); 
     return view('profile.testing') 
      ->with('statuses',$statuses); 
    } 

回答

0

除非你在你的问题犯了一个错误,你实际上并没有你的控制器内查询任何数据,因为你缺少一个在get()电话。

$statuses=Status::where(function($query){ 
     return $query->where('user_id',Auth::user()->id); 
})->orderBy('created_at','desc') 
->get(); // Get the data from the DB 

return view('profile.testing')->with('statuses',$statuses); 

没有get()打电话给你的控制器可能分配只是QueryBuilder对象到$statuses变量传递到您的视图的一个实例。

+0

嗨, - > get()用于检查数据是否已通过,所以与我的问题无关。控制器端是实际的代码。 – masterhunter

+0

这就是我的观点。你需要调用''get()''来获取数据库中的数据。否则,您只会传递一个定义查询的对象。所以你的''foreach''循环没有数据可以循环,因为你没有向数据库询问数据 - 你只是为数据库准备了一个查询(命令),但实际上并没有要求数据库执行查询。 get()函数实际上是向数据库提供数据的函数。 – PeterTheLobster

+0

确定看起来像我发现的问题,感谢您的帮助。节省我很多时间。 – masterhunter