Laravel分页表 - 对一列进行排序

时间:2017-03-26 17:28:39

标签: javascript php jquery laravel sorting

我目前有以下内容:

<table class="table table-striped">
    <tr>
        <th> Artikelbild </th>
        <th> Artikelnummer </th>
        <th> Name des Artikels </th>
        <th> Beschreibung </th>
        <th> Preis </th>
        <th> Kategorie </th>
    </tr> @foreach($products as $product)
    <tr class='clickable-row' <?php if($product->stockCount === 0) echo "style='color:red;'";?>data-href="{{url('/product')}}
        <?php echo '/'.$product->id;?>">
        <td> <img src="/images/{{$product->imageUrl}}" class="productImageSmall" /> </td>
        <td> {{$product->id}} </td>
        <td> {{$product->name}} </td>
        <td>
            <?php if (strlen($product->description) > 30) { $productShortened = substr($product->description, 0, 30) . "[...]"; } else { $productShortened = $product->description; } echo $productShortened; ?> </td>
        <td>
            <?php echo number_format($product->price, 2, ',', '.');?>€ </td>
        <td> {{$product->categoryName}} </td>
    </tr> @endforeach
</table>

使用$product选项从我的控制器传递paginate()

现在我希望这个表可以按一列排序。因此,假设用户点击&#34;价格&#34; (或德语中的Preis)列在表的顶部,然后所有结果应按价格(从低到高或从高到低)排序,对于类别,名称和每个其他列都相同。

我该怎么做?我是否必须重新加载页面并从数据库中再次获取数据,但不知何故排序(如果是,如何?)。或者我可以以某种方式对它进行排序而不重新加载它?我怎么能这样做?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

构建可排序表是一项非常耗时的任务,因此我建议您使用某些程序包。我使用this package来构建可排序表。

如果您仍想自己构建此功能,可以向URL添加?price=desc等参数,并使用request()方法获取这些参数。举个例子:

if (request()->has('price')) {
    $query = $query->orderBy('price', request('price'));
}

别忘了append URL arguments to the pagination links

{{ $products->appends(['price' => 'desc'])->render() }}