Php 查询中的Laravel动态排序依据

Php 查询中的Laravel动态排序依据,php,mysql,laravel,laravel-5,Php,Mysql,Laravel,Laravel 5,我有一张有10个不同字段的桌子。我希望能够单击表的列,然后页面将重新加载所选列中的order by 我已将此添加到我的路线中: Route::get('/inventory/sort/{sortby}', ['uses' => 'ItemController@index']); 我的控制器: public function index($sortby = null) { $Inventory_Items = ItemDynamic::with(['Item'])

我有一张有10个不同字段的桌子。我希望能够单击表的列,然后页面将重新加载所选列中的order by

我已将此添加到我的路线中:

Route::get('/inventory/sort/{sortby}', ['uses' => 'ItemController@index']); 
我的控制器:

 public function index($sortby = null) {
    $Inventory_Items = ItemDynamic::with(['Item'])
                     ->orderBy(function ($query) use($sortby) {
                         if ($sortby == "quantity") {
                           $query->orderBy('Quantity','asc');
                         } else if ($sortby == 'name') {
                           $query->orderBy('name','asc');
                         } else {
                           $query->orderBy('id','asc');
                         }
                       })
                     ->paginate(20);
        return view('adminlte::Item.index', ['Inventory_Items' => $Inventory_Items]);
    }
因此,当我访问
/inventory/sort/quantity
时,应该会生成一个按数量排序的订单

相反,我得到了一个strtolower()错误


关于如何实现这一点有什么想法吗?

这里似乎有点递归。在orderBy中运行查询

我将把条件返回到orderBy方法中

 if($sortBy == 'desired condition') 
    { $sortBy = 'desired condition'; $dir == "asc/..."; } 
 ...orderBy($sortBy, $dir)...

看起来这里有点递归。在orderBy中运行查询

我将把条件返回到orderBy方法中

 if($sortBy == 'desired condition') 
    { $sortBy = 'desired condition'; $dir == "asc/..."; } 
 ...orderBy($sortBy, $dir)...