laravel 有条件的分页
Pagination in laravel with conditions
我的分页有问题,到目前为止我查看了 docs 但我无法在其中找到。我还查看了有关堆栈溢出的其他 post,但它们不具备我在这种情况下的条件。那么我该如何对 if
语句进行分页,因为我得到了错误
Undefined property: Illuminate\Pagination\LengthAwarePaginator::$threads
因为当你分页时,你需要像这样直接从模型中取出它model::paginate()
所以在这种情况下你怎么能做到呢?
控制器
public function index(Request $request)
{
if($request->has('tags')){
$tag = Tag::find($request->tags)->paginate(10);
$threads = $tag->threads;
} else {
$threads = Thread::paginate(10);
}
return view('thread.index', compact('threads'));
}
那么如何才能正确地对 $tag = Tag::find($request->tags)->paginate(10);
进行分页呢?
生成 link 的 blade 如果单击 link,控制器从中获取 tag
<div class="col-md-3">
<h4>Tags</h4>
<ul class="list-group">
<a href="{{route('thread.index')}}" class="list-group-item">
<span class="badge">14</span>
All Threads
</a>
@foreach($tags as $tag)
<a href="{{route('thread.index',['tags' => $tag->id])}}" class="list-group-item">
<span class="badge">14</span>
{{$tag->name}}
</a>
@endforeach
</ul>
更新
var_dump($request->tags);
在控制器中掉落 string(1) "2"
可以使用whereHas()
方法添加关系条件(docs)。
if ($request->has('tags')){
$threads = Thread::whereHas('tags', function ($query) use ($request) {
$query->whereIn('tags.id', $request->tags);
})->paginate(10);
} else {
$threads = Thread::paginate(10);
}
在此示例中,您需要使用 whereIn
方法将第三行更改为您的正确需要。
我的分页有问题,到目前为止我查看了 docs 但我无法在其中找到。我还查看了有关堆栈溢出的其他 post,但它们不具备我在这种情况下的条件。那么我该如何对 if
语句进行分页,因为我得到了错误
Undefined property: Illuminate\Pagination\LengthAwarePaginator::$threads
因为当你分页时,你需要像这样直接从模型中取出它model::paginate()
所以在这种情况下你怎么能做到呢?
控制器
public function index(Request $request)
{
if($request->has('tags')){
$tag = Tag::find($request->tags)->paginate(10);
$threads = $tag->threads;
} else {
$threads = Thread::paginate(10);
}
return view('thread.index', compact('threads'));
}
那么如何才能正确地对 $tag = Tag::find($request->tags)->paginate(10);
进行分页呢?
生成 link 的 blade 如果单击 link,控制器从中获取 tag
<div class="col-md-3">
<h4>Tags</h4>
<ul class="list-group">
<a href="{{route('thread.index')}}" class="list-group-item">
<span class="badge">14</span>
All Threads
</a>
@foreach($tags as $tag)
<a href="{{route('thread.index',['tags' => $tag->id])}}" class="list-group-item">
<span class="badge">14</span>
{{$tag->name}}
</a>
@endforeach
</ul>
更新
var_dump($request->tags);
在控制器中掉落 string(1) "2"
可以使用whereHas()
方法添加关系条件(docs)。
if ($request->has('tags')){
$threads = Thread::whereHas('tags', function ($query) use ($request) {
$query->whereIn('tags.id', $request->tags);
})->paginate(10);
} else {
$threads = Thread::paginate(10);
}
在此示例中,您需要使用 whereIn
方法将第三行更改为您的正确需要。