laravel - 方法 Illuminate\Database\Eloquent\Collection
问题描述
我想在刀片中使用分页显示文章,但出现以下错误。不使用分页我没有问题。
BadMethodCallException 方法 Illuminate\Database\Eloquent\Collection::links 不存在。(查看:c:\xampp\htdocs\blog\resources\views\frontend\tag.blade.php)
public function tag($slug)
{
$tag = Tag::where('slug', $slug)->first() ?? abort(404);
$articles = Article::where('status', '=', '1')->paginate(5);
$article = $tag->articles;
return view('frontend.tag', compact('article'));
}
前端/tag.blade.php:
{{ $article->links() }}
型号:Article.php
public function articles()
{
return $this->belongsToMany(Article::class);
}
解决方案
你打错电话了。$article->links()
它不应该article->links()
在你的刀片中。你错过$
了article
{{ $article->links() }}
同样在你的控制器中删除 $article = $tag->articles;
。因为这个替换分页结果来自第一个查询,它应该是
$articles = Article::whereHas('tags',function($query)use($slug){$query->where('slug', $slug)})->where('status', '=', '1')->paginate(5);
最终解决方案是
public function tag($slug)
{
$articles = Article::whereHas('tags',function($query)use($slug){
$query->where('slug', $slug)})->where('status', '=', '1')->paginate(5);
return view('frontend.tag', compact('article'));
}
在文章模型中添加关系
public function tags()
{
return $this->belongsToMany(Tag::class);
}
并查看分页
{{ $article->links() }}
推荐阅读
- javascript - 提交表单时未触发javascript onsubmit事件
- flutter - Flutter 桌面 - 从 Dart 代码更改窗口标题
- python - 我想用 librosa 读取多个音频文件,然后将其保存到一个空列表中
- azure - 如何将字符串参数列表传递给 Azure DevOps 模板
- reactjs - 无法在 Jest Test 模块中的模块外使用 import 语句
- rust - 在 rust-webpack-template 的“reqwest”中找不到“阻塞”
- javascript - Google AdSense 审核不断返回,但没有内容错误(JavaScript 客户端呈现)
- javascript - 将多个json对象转换为对象数组
- html - 使用 HTML5 模式进行验证
- reactjs - react js创建本地数据库的方法