Php 查询中的Laravel动态排序依据
我有一张有10个不同字段的桌子。我希望能够单击表的列,然后页面将重新加载所选列中的order by 我已将此添加到我的路线中: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'])
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)...