Laravel按查询和URL排序结果

时间:2018-01-24 08:22:36

标签: laravel laravel-5

我希望使用网址对搜索结果进行排序。我不能以我的方式使用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的初学者,我知道它不正确。

谢谢!

1 个答案:

答案 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);