Laravel“为foreach()提供了无效的参数”

时间:2020-05-20 13:38:42

标签: php laravel

我正在学习laravel,并且在更新代码标签后遇到了标签问题。当我单击标签时,我会遇到此问题:

Facade \ Ignition \ Exceptions \ ViewException提供了无效的参数 foreach()(查看:C:\ blog \ resources \ views \ articles \ index.blade.php)

我在控制器中的代码:

<?php

namespace App\Http\Controllers;

use App\Article;
use App\Tag;

use Illuminate\Http\Request;

class ArticlesController extends Controller
{
public function index()
{
    if(request('tag'))
    {
        $articles = Tag::where('name', request('tag'))->firstOrFail()->articles;
    } 
    else 
    {
        $articles = Article::latest()->get();
    }
    return view ('articles.index',['articles' => $articles]);
}

显示页面

@foreach ($articles as $article )
            <div class="content">
                <div class="title">
                    <h2>
                        <a href="/articles/{{$article->id}}">
                            {!! $article->title !!}
                        </a>
                    </h2>
                </div>

                <p>
                <img src="/images/banner.jpg" alt="" class="image image-full"/>
                </p>

                {!! $article->exceprt!!}
            </div>
        @endforeach

这是雄辩的Tag:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Tag extends Model
{
public function article()
{
    return $this->belongsToMany(Article::class);
}
}

2 个答案:

答案 0 :(得分:1)

错误表明文章数组为空。

您需要添加条件以检查数组是否为空。

@if(!empty($articles))
@foreach ($articles as $article)
@endforeach
@endif

这不是获取文章的正确方法。我建议您使用需要检查标记的位置。

答案 1 :(得分:0)

您的标签模型中的pivot_longer(df1, cols=-c(pidp, sex, edtype), names_to=c(".value","wave"), names_pattern="(.*)_(\\d)") 关系未定义。因此,当您致电articles时,您不会获得集合,而是得到Tag::where('name', request('tag'))->firstOrFail()->articles

这就是为什么出现此错误的原因,因为您无法循环访问null变量。

您应该修正自己的恋情:

null