【问题标题】:Pagination in laravel with conditions带有条件的laravel分页
【发布时间】:2019-03-26 13:26:03
【问题描述】:

我遇到了分页问题,​​到目前为止,我查看了docs,但在那里找不到。我还查看了有关堆栈溢出的其他帖子,但在这种情况下,它们不具备我的条件。那么我如何对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-&gt;tags); 在控制器中丢弃string(1) "2"

【问题讨论】:

    标签: laravel laravel-5.8


    【解决方案1】:

    您可以使用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 方法将第三行更改为您的正确需求。

    【讨论】:

    • 它返回错误Argument 1 passed to Illuminate\Database\Query\Builder::cleanBindings() must be of the type array, string given(不完全理解wherein)但我认为idtags.id 在这种情况下应该是数据库表名,但即使我这样做它仍然返回错误。我也看了这个wherein docs laravel
    • whereIn 更改为where 时有效。如果这不起作用:$request-&gt;tags 数据是什么样的?能否提供数据转储。
    • 它可以工作,但是当转到分页的第二页时,它正在重置它。
    • 您需要将数据附加到分页链接。在 this page 上搜索 Appending To Pagination Links 。您需要执行以下操作:{{ $threads-&gt;appends(['tags' =&gt; $tags])-&gt;links() }}。但是请确保将 $tags 变量发送到具有来自控制器的正确内容的视图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 2016-01-24
    • 2015-12-30
    • 2013-08-31
    • 2021-02-22
    相关资源
    最近更新 更多