我正在学习 laravel,在更新标签代码后,我的标签有问题。当我点击标签时,我遇到了这个问题:
外观\点火\异常\视图异常 提供的参数无效 foreach(( (view: C:\blog\resources\views\articles\index.blade.php(
我在控制器中的代码:
<?php
namespace AppHttpControllers;
use AppArticle;
use AppTag;
use IlluminateHttpRequest;
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
这是标签雄辩:
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Tag extends Model
{
public function article()
{
return $this->belongsToMany(Article::class);
}
}
错误指出文章数组为空。
您需要添加条件以检查数组是否为空。
@if(!empty($articles))
@foreach ($articles as $article)
@endforeach
@endif
这不是获取文章的正确方法。我建议您使用在哪里必须检查标签。
标签模型中的articles
关系未定义。因此,当您致电Tag::where('name', request('tag'))->firstOrFail()->articles
时,您得到的不是收藏,而是null
。
这就是您收到此错误的原因,因为您无法循环null
变量。
你应该修复你们的关系:
public function articles() // <---- You were missing the 's'
{
return $this->belongsToMany(Article::class);
}