Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5搜索结果分页_Php_Laravel 5_Pagination - Fatal编程技术网

Php Laravel 5搜索结果分页

Php Laravel 5搜索结果分页,php,laravel-5,pagination,Php,Laravel 5,Pagination,我使用文本框和下拉列表创建了一些搜索过滤器,因此当我单击搜索按钮时,我想使用这些过滤器中的任何一个来查询有说服力的关系 搜索工作正常,我得到了正确数量的结果,但问题在于分页。当我点击下一页按钮(或任何其他页面)时,结果就是结果,我再次获得所有信息 我知道这一点,因为我在单击分页时没有执行请求,所以我的问题是如何执行相同的查询,但使用分页 这是我的控制器功能 public function index(Request $request) { if(!empty($request)) {

我使用文本框和下拉列表创建了一些搜索过滤器,因此当我单击搜索按钮时,我想使用这些过滤器中的任何一个来查询有说服力的关系

搜索工作正常,我得到了正确数量的结果,但问题在于分页。当我点击下一页按钮(或任何其他页面)时,结果就是结果,我再次获得所有信息

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

这是我的控制器功能

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);
}

我可以通过改变控制器的功能来修复它。我不知道IF的声明

$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);
在我放置分页链接的视图中,我替换了

{{ $products->links() }}


与您的问题无关,只是附带说明:您不需要执行
$products=$query->where(…)
,只需执行
$query->where(…)
即可。
{{ $products->appends(\Request::except('_token'))->render() }}