2016-12-10 4 views
0

Я создаю контроллер, как обычно, и планирую передавать данные для просмотра и отображения, но я не знаю, почему данные не могут быть показаны, я использую dd ($ statuses) показывает массив переданы с правильными данными. но когда я изменяю, чтобы посмотреть, что данные исчезли, кто-нибудь знает, в чем проблемы?Данные не отображаются в поле зрения 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

Привет, the-> get() используется, чтобы проверить, были ли данные переданы, поэтому не имеет отношения к моему вопросу. Сторона контроллера является фактическим кодом. – masterhunter

+0

Это моя точка зрения. Вам нужно вызвать '' get() '', чтобы получить данные из вашей базы данных. В противном случае вы передадите только объект, который определяет запрос. Таким образом, ваш цикл 'foreach'' не имеет данных для перебора, потому что вы не запрашивали базу данных для данных - вы только что подготовили запрос (команду) для базы данных, но фактически не запрашивали базу данных для выполнения запроса. Функция '' get() '' - это та, которая фактически запрашивает базу данных для данных. – PeterTheLobster

+0

ОК, похоже, я нашел проблемы, спасибо за вашу помощь. Сэкономьте много времени. – masterhunter

Смежные вопросы