如何将分页与 laravel eloquent 中的查找方法一起使用 laravel 5.4
How to use pagination along with laravel eloquent find method in 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 ($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 并在该页面中实现分页。
这是展示标签视图的代码
<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>
如果有人知道如何执行此操作,请回复。提前致谢。
使用这一行 $tag = Tag::find($id)->paginate(5);
你应该只得到一个标签(如果你的 id 标签不存在,则为 null),然后你想对其进行分页。如果你想对你的标签进行分页,获取所有标签,然后对其进行分页 Tag::paginate(5)
我用一个简单的技巧解决了这个问题。我的目标是在相同的标签下对所有 post 进行分页,就像你们在 Whosebug 中看到的那样。
修改后的控制器函数为
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() !!}
制作 link 分页
我用{!! $tag->paginate(10) !!}
我正在尝试在 laravel 中实现分页并出现以下错误
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 并在该页面中实现分页。
这是展示标签视图的代码
<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>
如果有人知道如何执行此操作,请回复。提前致谢。
使用这一行 $tag = Tag::find($id)->paginate(5);
你应该只得到一个标签(如果你的 id 标签不存在,则为 null),然后你想对其进行分页。如果你想对你的标签进行分页,获取所有标签,然后对其进行分页 Tag::paginate(5)
我用一个简单的技巧解决了这个问题。我的目标是在相同的标签下对所有 post 进行分页,就像你们在 Whosebug 中看到的那样。
修改后的控制器函数为
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() !!}
制作 link 分页
我用{!! $tag->paginate(10) !!}