laravel - 带有条件的laravel分页
问题描述
我有分页问题,到目前为止,我查看了文档,但在那里找不到。我还查看了有关堆栈溢出的其他帖子,但在这种情况下,它们不具备我的条件。那么我如何对if
语句进行分页,因为我得到了错误
未定义属性: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);
呢?
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()
方法添加关系条件(文档)。
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
为您的正确需求。
推荐阅读
- arrays - 詹金斯管道将字符串推送到数组
- python - Nested dask delayed or futures
- sap-erp - How to extend "Create with reference" dialog in VA01/02
- javascript - 如何在每次循环重复期间更改的 getElementbyId() 中放置一个变量?
- amazon-web-services - AEM/Adobe Experience Manager 仅将部分资产上传到 AWS S3
- ios - 发布第一条消息后,SwiftyZeroMQ Publisher 无法识别订阅者
- azure-active-directory - 在使用 Azure Active Directory 的 WASM Blazor 中,如何在开发过程中绕过 Auth
- xml - 没有 Disassemble 阶段组件可以识别数据。管道默认值:XMLRECEIVE
- php - 如果关联数组中存在多个特定键值对
- sockets - 通过套接字 C 在以太网接口中注入任何帧