我希望使用网址对搜索结果进行排序。我不能以我的方式使用Controller,因为我使用Route /search
。
我的搜寻路线:
Route::get ( '/', function () {
$mydb= Product::paginate(200);
return view ( 'search' )->withProduct($mydb);
} );
Route::any ( '/search', function () {
$q = Input::get ( 'q' );
$sort = Product::where ( 'name', 'LIKE', '%' . $q . '%' )->orderBy('created_at','desc')->paginate(20);
if($q != ""){
$products = Product::where ( 'name', 'LIKE', '%' . $q . '%' )->orWhere ( 'description', 'LIKE', '%' . $q . '%' )->paginate (200)->setPath ( '' );
$pagination = $products->appends ( array (
'q' => Input::get ( 'q' )
) );
if (count ( $products ) > 0)
return view ( 'search' )->withDetails ( $products )->withQuery ( $q );
}
现在我想创建一个Button,我可以在query
搜索中对结果进行排序。
按钮示例:
<a href="/search?q={{ $query }}">Sort by Price</a>
我想这样添加到我的路线:
$sort = Product::where ( 'name', 'LIKE', '%' . $q . '%' )->orderBy('created_at','desc')->paginate(20);
这不行..
然后在我的Button URL后面添加{{ $sort }}
,如:
<a href="/search?q={{ $query }}&`{{ $sort }}">Sort by Price</a>
任何想法我怎么能做到正确?对不起,我是Laravel的初学者,我知道它不正确。
谢谢!
答案 0 :(得分:0)
您的代码中似乎存在很多错误。 但这一行
<a href="/search?q={{ $query }}&`{{ $sort }}">Sort by Price</a>
可能是
<a href="/search?q={{ $query }}&orderby=price">Sort by Price</a>
然后在你的关闭
$q = Input::get ( 'q' );
$orderby = Input::has('orderby') ? Input::get('orderby') : 'created_at';
$sort = Product::where ( 'name', 'LIKE', '%' . $q . '%' )->orderBy($orderby,'desc')->paginate(20);