路过的夏季 2024-06-04 14:34 采纳率: 82.4%
浏览 10
已结题

laravel-admin框架管理端怎么让他表格排序方式按照id由小到大排列?

laravel-admin框架管理端怎么让他默认表格排序方式按照id由小到大排列?

img


如上是系统默认的表格按照id大小倒序排列,怎么让它按照id大小顺序排列;我在

img


我在查询方法中加入 ->orderBy('id asc'),不生效

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-04 14:34
    关注

    引自免费微信小程序:皆我百晓生

    为了使 Laravel Admin 的表格默认按照 ID 从小到大排序,你需要对模型查询进行一些调整。首先,确保你在设备模型(通常是 Device)中定义了适当的关联关系,并且在控制器中正确地设置了分页查询。

    在你的设备模型 (app/Models/Device.php) 中,确认已经定义了与公司关联的关系。如果没有定义,添加如下代码:

    // app/Models/Device.php
    use Illuminate\Database\Eloquent\Model;
    
    class Device extends Model
    {
        public function company()
        {
            return $this->belongsTo(Company::class);
        }
    }
    

    然后,在你的控制器中,即包含 getPageData() 方法的文件中,比如 app/Admin/Controllers/DeviceController.php,你需要修改 getPageData() 方法以便在查询时按 ID 升序排序。在 addWhere() 方法之后调用 orderBy('id', 'asc')。这里是修改后的代码:

    // app/Admin/Controllers/DeviceController.php
    namespace App\Admin\Controllers;
    
    use Encore\Admin\Facades\Admin;
    use Encore\Admin\Grid;
    use Encore\Admin\Layout\Column;
    use Encore\Admin\Layout\Row;
    use Encore\Admin\Widgets\Box;
    use App\Models\Device;
    use Encore\Admin\Controllers\Form;
    use Encore\Admin\Controllersresource;
    
    class DevicesController extends ControllerResource
    {
        // ...
    
        public function grid()
        {
            $grid = new Grid(new Device());
    
            $grid->column('id', 'ID');
            $grid->column('name', '设备名称');
            $grid->column('unionld', 'unionld');
            $grid->column('company.name', '所属公司');
            $grid->column('type', '设备类型');
            $grid->column('status', '状态');
            $grid->column('created_at', '创建时间');
            $grid->column('updated_at', '编辑时间');
    
            $grid->filter(function ($filter) {
                $filter->like('name', '设备名称');
                // ...其他过滤条件
            });
    
            $grid->model()->with(['company'])->addFilter(function ($query, $value, $operator) {
                // ...处理过滤逻辑
            });
    
            $grid->ajax();
    
            return $grid;
        }
    
        public function index()
        {
            return view('admin.devices.index');
        }
    
        // ...
    
        public function getPageData($param, $perPage)
        {
            return Device::with('company')
                ->addWhere($param)
                ->orderBy('id', 'asc')
                ->paginate($perPage);
        }
    
        // ...
    }
    

    这样,当您访问设备列表页面时,表格将默认按照 ID 从小到大排序。如果你之前有设置过全局排序规则,请确保这不会覆盖这里的设置。如果仍然没有效果,请检查是否有其他地方影响了排序。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月11日
  • 已采纳回答 6月11日
  • 创建了问题 6月4日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表