首页 > 解决方案 > laravel 中的 Foreach 循环错误(可能)

问题描述

我有一个代码,我想news在刀片文件中显示所有内容,我在数据库中有大约 30 多个数据,但刀片中只显示 1 条新闻,我不明白为什么会这样。相同的过程用于获取notifications并且一切正常...xD

我的控制器

public function getNews() {
    $news = News::orderBy('date', 'DESC')->paginate();
    return view('information.news', [
        'news' => $news
    ]);
}

新闻.blade.php

@if (count($news) > 0)
  <div class="row">
   @foreach($news as $n)
    {{ $n->title }}
   @endforeach
  </div>
  <div class="text-center">
    {{ $news->links() }}
  </div>
@else
  <p>No News</p>
@endif

我尝试复制notification页面并将变量更改为news但只有 1 个数据。

dd($news);我使用时它给出 38get()

{{ count($news) }}我使用时它给出 38get()

但只有1个数据循环显示

标签: phplaravel

解决方案


当您paginate()时,您的结果存储在一个数组中,其中 data 是 key

例如

{
   "total": 50,
   "per_page": 15,
   "current_page": 1,
   "last_page": 4,
   "first_page_url": "http://laravel.app?page=1",
   "last_page_url": "http://laravel.app?page=4",
   "next_page_url": "http://laravel.app?page=2",
   "prev_page_url": null,
   "path": "http://laravel.app",
   "from": 1,
   "to": 15,
   "data":[
        {
            // Result Object
        },
        {
            // Result Object
        }
   ]
}

在你的刀片中,像这样使用它:

@foreach($news['data'] as $n)
    {{ $n->title }}
@endforeach

推荐阅读