Php 如何在laravel 5.4中使用分页和laravel雄辩的查找方法
我试图在laravel中实现分页,但出现以下错误Php 如何在laravel 5.4中使用分页和laravel雄辩的查找方法,php,laravel,pagination,laravel-5.4,Php,Laravel,Pagination,Laravel 5.4,我试图在laravel中实现分页,但出现以下错误 Undefined property: Illuminate\Pagination\LengthAwarePaginator::$name 这是我的控制器功能 public function showTags($id) { $tag = Tag::find($id)->paginate(5); // when lazy loading $tag->load(['posts' => function (
Undefined property: Illuminate\Pagination\LengthAwarePaginator::$name
这是我的控制器功能
public function showTags($id)
{
$tag = Tag::find($id)->paginate(5);
// when lazy loading
$tag->load(['posts' => function ($q) {
$q->orderBy('id', 'desc');
}]);
return view('blog.showtags')->withTag($tag);
}
这是标签模型
class Tag extends Model
{
public function posts()
{
return $this->belongsToMany('App\Post');
}
}
Tag和Post模型具有belongsToMany关系,因此在特定标记下有许多Post,我的目标是按Post的降序迭代特定标记下的所有Post,并在该页面中实现分页
下面是showtags视图的代码
<table class="table">
<thead>
<tr>
<th>#</th>
<th>Title</th>
<th>Tags</th>
</tr>
</thead>
<tbody>
<?php $count = 1; ?>
@foreach($tag->posts as $post)
<tr>
<th>{{ $count++ }}</th>
<th>{{ $post->title }}</th>
<th>@foreach($post->tags as $tag)
<span class="label label-default">{{ $tag->name }}</span>
@endforeach
</th>
</tr>
@endforeach
</tbody>
</table>
//Here is the code i used for pagination in view
<div class="text-center">
{!! $tag->posts->links() !!}
</div>
#
标题
标签
@foreach($tag->posts as$post)
{{$count++}
{{$post->title}
@foreach($post->tags as$tag)
{{$tag->name}
@endforeach
@endforeach
//下面是我在视图中用于分页的代码
{!!$tag->posts->links()!!}
如果有人知道怎么做,请回复。提前感谢。用这一行
$tag=tag::find($id)->分页(5)
您应该只获得一个标记(如果id为的标记不存在,则为null),然后您希望对其进行分页。如果你想对你的标签进行分页,得到所有的标签,然后对它进行分页Tag::paginate(5)
我用一个简单的技巧解决了这个问题。我的目标是在相同的标签下对所有帖子进行分页,就像你们在StackOverflow中看到的一样
修改后的控制器功能为
public function showTags($id)
{
$tag = Tag::find($id);
// when lazy loading
$tag->load(['posts' => function ($q) {
$q->orderBy('id', 'desc')->paginate(10);
}]);
return view('blog.showtags')->withTag($tag);
}
正如你们所看到的,我将paginate()函数从find移动到load函数,我以前使用它按降序对post进行排序
现在在视图中,不再使用传统方法{!!$tag->links()!!}
创建分页链接
我使用
{!!$tag->paginate(10)!!
不确定是否缺少某些内容,但find
仅获取一行,因此无法对其进行分页。你想做什么?@apokryfos我知道find只给出一行,但你可以在我的视图中看到,我在同一个标记下迭代每个帖子,因为标记与帖子有很多关系。我的目标是通过分页将所有帖子组织在同一标签下。那么有什么方法可以做到这一点吗?你可能会做一些类似于$tag->posts()->paginate(5)
或类似的事情。在函数showTags($id)
中,$id
是一个标签id。对吗?@apokryfos感谢你的建议,我用$tag->posts()->paginate(5)替换$tag->posts->links()在我看来,从视图中删除错误并相应地对控制器进行轻微修改有助于解决问题。