我有一个包含10个不同字段的表格。我希望能够单击表格的列,然后页面将按照所选列中的顺序重新加载。
我已将此添加到我的路线中:
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()错误。
关于如何实现这一目标的任何想法?
答案 0 :(得分:1)
看起来这里有一点递归。在orderBy中运行查询。
我会将条件返回到orderBy方法。
if($sortBy == 'desired condition')
{ $sortBy = 'desired condition'; $dir == "asc/..."; }
...orderBy($sortBy, $dir)...