首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 5搜索结果分页

Laravel 5搜索结果分页
EN

Stack Overflow用户
提问于 2017-10-09 10:41:52
回答 1查看 2.8K关注 0票数 1

我已经使用文本框创建了一些搜索筛选器,所以当我单击搜索按钮时,我想使用这些过滤器中的任何一个来查询雄辩的关系。

搜索很好,我得到了正确的结果数量,但问题在于分页。当我单击下一个页面按钮(或任何其他页面)时,结果就是结果,我再次得到所有内容。

我知道这一点,因为当分页被单击时,我不执行请求,所以我的问题是如何执行相同的查询,但使用分页?

这是我的控制器功能

代码语言:javascript
复制
public function index(Request $request)
{
    if(!empty($request)) {

        $products = Product::with(['supplier', 'carrier', 'name']);

        if($request->name) {
            $products = $products->whereHas('Name', function ($query) use ($request) {
                $products = $query->where('Name', $request->name);
            });
        }
        if($request->subtype) {
            $products = $products->whereHas('SubType', function ($query) use ($request) {
                $products = $query->where('SubTypeId', $request->subtype);
            });
        }
        if($request->supplier) {
            $products = $products->whereHas('Supplier', function ($query) use ($request) {
                $products = $query->where('SupplierId', $request->supplier);
            });
        }
        if($request->carrier) {
            $products = $products->whereHas('Carrier', function ($query) use ($request) {
                $products = $query->where('CarrierId', $request->carrier);
            });
        }

        $products = $products->paginate(8);
    }
    else {
        $products = Product::with(['supplier', 'carrier', 'name'])->paginate(8);
    }

    $suppliers = Supplier::all();
    $carriers = Carrier::all();
    $subtypes = SubType::all();

    $options = array(
        'products' => $products,
        'suppliers' => $suppliers,
        'subtypes' => $subtypes,
        'carriers' => $carriers
    );

    return view('products.index')->with($options);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-09 13:52:07

我可以通过更改控制器函数来修复它。我没有说如果

代码语言:javascript
复制
$products = Product::with(['supplier', 'carrier', 'name']);

if($request->name) {
    $products = $products->whereHas('Name', function ($query) use ($request) {
        $query->where('Name', $request->name);
    });
}
if($request->subtype) {
    $products = $products->whereHas('SubType', function ($query) use ($request) {
        $query->where('SubTypeId', $request->subtype);
    });
}
if($request->supplier) {
    $products = $products->whereHas('Supplier', function ($query) use ($request) {
        $query->where('SupplierId', $request->supplier);
    });
}
if($request->carrier) {
    $products = $products->whereHas('Carrier', function ($query) use ($request) {
        $query->where('CarrierId', $request->carrier);
    });
}

$products = $products->paginate(8);

$suppliers = Supplier::all();
$carriers = Carrier::all();
$subtypes = SubType::all();

$options = array(
    'products' => $products,
    'suppliers' => $suppliers,
    'subtypes' => $subtypes,
    'carriers' => $carriers
);

return view('products.index')->with($options);

在我看来,在我放置分页链接的地方,我替换了

代码语言:javascript
复制
{{ $products->links() }}

使用

代码语言:javascript
复制
{{ $products->appends(\Request::except('_token'))->render() }}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46644529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档