猿问

使用laravel分页操作时报错Call to undefined method App\Posts::links()

使用laravel分页操作时报错Call to undefined method App\Posts::links() (View: F:\MyPHP\laravel\resources\views\posts\lst.blade.php)

是什么原因啊QAQ,我搜索的时候发现没人和我一样出错啊,laravel新手,求帮助QAQ

控制器代码:

public function lst()
{
$posts = Posts::paginate(2);
return view('posts/lst',compact('posts'));
}


lst.blade.php代码

<div>
  @foreach($posts as $posts)
  <div class="blog-post">
    <h2 class="blog-post-title"><a href="/posts/{{$posts->id}}" >{{$posts->title}}</a></h2>
    <p class="blog-post-meta">{{$posts->updated_at}} &nbsp;&nbsp;&nbsp;by <a href="/user/5">Kassandra Ankunding2</a></p>
    <p>{{$posts->content}}
    <p class="blog-post-meta">赞 0  | 评论 0</p>
  </div>
  @endforeach
</div>
{{$posts->links()}}

数据库有三条数据,去掉{{$posts->links()}}就能正常显示两条数据,说明控制器至少应该没问题啊,但是视图文件一添加{{$posts->links()}}就会报没有links()这个方法

咸鱼野人
浏览 3555回答 8
8回答

咸鱼野人

找到原因了<div>             @foreach($posts as $post)             <div class="blog-post">                 <h2 class="blog-post-title"><a href="/posts/{{$post->id}}" >{{$post->title}}</a></h2>                 <p class="blog-post-meta">{{$post->updated_at}} &nbsp;&nbsp;&nbsp;by <a href="/user/5">Kassandra Ankunding2</a></p>                 <p>{{$post->content}}                 <p class="blog-post-meta">赞 0  | 评论 0</p>             </div>             @endforeach                     </div><!-- /.blog-main -->         {{$posts->links()}}@foreach($posts as $post)不应该写成@foreach($posts as $posts)不然后面的{{$posts->links()}}会分不清是哪个posts?我猜原因是这个⊙﹏⊙b

咸鱼野人

public function lst() { $posts = Posts::paginate(2); return view("posts.lst",["posts"=>$posts]); } 控制器没用compact函数,任然报相同的错误

菜鸟教程

因为你的compact把$posts里的数据全部变成数组了,->links当然访问不到了。return view(view,[$datas=>$post])然后迭代datas就可以解决了。
随时随地看视频慕课网APP
我要回答