2016-12-10 79 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