У меня есть результат поиска. У меня также есть мой пагинатор в представлении, но когда я нажимаю на страницы, он возвращает ошибку 404.
Я пробовал это:
1- @include('front.partials.pagination', ['paginator' => $products])
2- {{$products->appends(Request::except(['page','_token']))->links() }}
3- {{$products->appends(request()->query())->links() }}
4- $products->appends(['brands' => $brandss]); //in contoller
У всех одинаковый результат 404 Error
Вот моя полная функция:
public function advancedsearch(Request $request) {
// dd($request->all());
$options = Specification::whereHas('subspecifications')->with(['subspecifications' => function($query){
$query->status('Active');
}])->get();
$brandss = Input::has('brands') ? Input::get('brands') : [];
$suboption = Input::has('suboptions') ? (int)Input::get('suboptions') : [];
$min_price = Input::has('min_price') ? (int)Input::get('min_price') : null;
$max_price = Input::has('max_price') ? (int)Input::get('max_price') : null;
//codes
if (!empty($request->input('brands')) && !empty($request->input('min_price')) && !empty($request->input('max_price'))){
$products = Product::
where('price', '>=', $min_price)
->where('price', '<=', $max_price)
->whereIn('brand_id', $brandss)
->paginate(12);
$products->appends(['brands' => $brandss, 'suboptions' => $suboption, 'min_price' => $min_price, 'max_price' => $max_price]);
}
elseif (!empty($request->input('suboptions')) && !empty($request->input('min_price')) && !empty($request->input('max_price'))){
$products = DB::table('products')
->join('product_subspecification', function ($join) {
$suboption = Input::has('suboptions') ? Input::get('suboptions') : [];
$join->on('products.id', '=', 'product_subspecification.product_id')
->where('product_subspecification.subspecification_id', '=', $suboption);
})
->where('products.price', '>=', $min_price)
->where('products.price', '<=', $max_price)
->paginate(12);
$products->appends(['brands' => $brandss, 'suboptions' => $suboption, 'min_price' => $min_price, 'max_price' => $max_price]);
}
//
elseif (!empty($request->input('brands')) && !empty($request->input('suboptions'))){
$products = DB::table('products')
->whereIn('products.brand_id', $brandss)
->join('product_subspecification', function ($join) {
$suboption = Input::has('suboptions') ? Input::get('suboptions') : [];
$join->on('products.id', '=', 'product_subspecification.product_id')
->where('product_subspecification.subspecification_id', '=', $suboption);
})
->paginate(12);
$products->appends(['brands' => $brandss, 'suboptions' => $suboption]);
}
elseif (!empty($request->input('brands')) && !empty($request->input('suboptions')) && !empty($request->input('min_price')) && !empty($request->input('max_price'))){
$products = DB::table('products')
->join('product_subspecification', function ($join) {
$suboption = Input::has('suboptions') ? Input::get('suboptions') : [];
$join->on('products.id', '=', 'product_subspecification.product_id')
->where('product_subspecification.subspecification_id', '=', $suboption);
})
->where('products.price', '>=', $min_price)
->where('products.price', '<=', $max_price)
->whereIn('products.brand_id', $brandss)
->paginate(12);
$products->appends(['brands' => $brandss, 'suboptions' => $suboption, 'min_price' => $min_price, 'max_price' => $max_price]);
}
//
elseif (!empty($request->input('suboptions'))){
$products = DB::table('products')
->join('product_subspecification', function ($join) {
$suboption = Input::has('suboptions') ? Input::get('suboptions') : [];
$join->on('products.id', '=', 'product_subspecification.product_id')
->where('product_subspecification.subspecification_id', '=', $suboption);
})
->paginate(12);
$products->appends(['suboptions' => $suboptions]);
}
elseif (!empty($request->input('brands'))){
$products = DB::table('products')
->whereIn('products.brand_id', $brandss)
->paginate(12);
$products->appends(['brands' => $brandss]);
}
elseif ($request->has('min_price') && $request->has('max_price')){
$products = DB::table('products')
->whereBetween('price', [$min_price, $max_price])
->paginate(12);
$products->appends(['min_price' => $min_price, 'max_price' => $max_price]);
}
return view('front.advancesearch', compact('products', 'options'));
}
Любая идея?
.................................................. .................................................. .................................................. .................................................. ........
@EmtiazZahid 5.6
А как насчет URL-адресов ссылок на страницы? Вы это проверили?
@sadaiMudiNaadhar идет как site.com?brands[]=1&page=2
Возможный дубликат Добавьте данные в laravel paginate
@WalterCejas whaaaaat ?! какие пользовательские данные нужно объединить? братан, пожалуйста, сначала посмотрите код. Я опубликовал свой контроллер. Вы видите какие-либо дополнительные данные, кроме $products = DB::....?
Что это за URL! Просто попробуйте URL работает вручную. (В любом случае)
@sadaiMudiNaadhar site.com/advanced-search?brands[0]=2&page=2, page=2 - это базовый URL-адрес для пагинации, а ?brands[0]=2 - это часть, которую я добавил в URL-адрес, который должен позволять пагинации работать без потери данных поиска.






Вы используете Eloquent в первой части и построитель запросов во второй части, а appends - это красноречивый метод, коллекция, которую вы получаете от построителя запросов, не совпадает с коллекцией от Eloquent Eloquent ... у нее разные методы. ..
Итак, вы говорите, что если я изменю свою часть if для использования запроса в качестве остальной функции, она будет исправлена?
это тоже не помогло
какую версию Laravel вы используете?