laravel-admin框架管理端怎么让他默认表格排序方式按照id由小到大排列?
如上是系统默认的表格按照id大小倒序排列,怎么让它按照id大小顺序排列;我在
我在查询方法中加入 ->orderBy('id asc'),不生效
laravel-admin框架管理端怎么让他默认表格排序方式按照id由小到大排列?
引自免费微信小程序:皆我百晓生
为了使 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 从小到大排序。如果你之前有设置过全局排序规则,请确保这不会覆盖这里的设置。如果仍然没有效果,请检查是否有其他地方影响了排序。