表格网站php源码Dcatadmin使⽤数据仓库实现复杂表格数据1、创建 TestRepository 类继承 Dcat\Admin\Repositories\QueryBuilderRepository 类
<?php
namespace App\Admin\Repositories;
use Dcat\Admin\Repositories\QueryBuilderRepository;
class TestRepository extends QueryBuilderRepository
{
// 设置你的主键名称
protected$keyName='id';
// 设置创建时间字段
protected$createdAtColumn='create_time';
// 设置更新时间字段
protected$updatedAtColumn='update_time';
// 返回表名
public function getTable()
{
return'table_name';
}
// 返回你的主键名称
public function getKeyName()
{
return$this->keyName;
}
/
/ 通过这个⽅法可以指定查询的字段,默认"*"
public function getGridColumns()
{
return['*'];
}
// 通过这个⽅法可以指定表单页查询的字段,默认"*"
public function getFormColumns()
{
return['*'];
}
// 通过这个⽅法可以指定数据详情页查询的字段,默认"*"
public function getDetailColumns()
{
return['*'];
}
// 返回数据表格 Grid 的数据,⽤于数据表格展⽰
// 例⼦中进⾏分页,不分页请参考官⽅⽂档
public function get(Model $model)
{
// 获取当前页数
$currentPage=$model->getCurrentPage();
// 获取每页显⽰⾏数
$perPage=$model->getPerPage();
$start=($currentPage-1)*$perPage;
// 获取排序参数, 格式例如['id', 'asc', null]
$sort=$model->getSort();
// 获取筛选条件
$id=$model->filter()->input('id'),
// 获取规格选择器条件
$gender=$model->filter()->input('_der'),
$param=[
'sort'=>$sort,
'search'=>['id'=>$id],
'selector'=>['gender'=>$gender]
];
$data=$this->getList($param);
return$model->makePaginator(
$data['total']??0,// 传⼊总记录数
$data['subjects']??[]// 传⼊数据⼆维数组
);
}
// 获取列表数据
public function getList(array$param)
{
$prePage=$param['per_page']??20;
$start=$param['start']??0;
$note_monitor=DB::table('table_name')->...
// 计算列表总数
$count=$note_monitor->count();
// 获取列表
$list=$note_monitor
->limit($prePage)->offset($start)->get()->toArray();
return[
'total'=>$count,
'subjects'=>$list
]
;
}
}
2、使⽤TestRepository 类展⽰列表
<?php
namespace App\Admin\Controllers;
use App\Admin\Repositories\TestRepository;
use Dcat\Admin\Grid;
use\Dcat\Admin\Http\Controllers\AdminController;
class TestController extends AdminController
{
protected function grid()
{
return Grid::make(new TestRepository(),function(Grid $grid){
// 第⼀列显⽰id字段,并将这⼀列设置为可排序列
$grid->column('id','ID')->sortable();
...
// 筛选
$grid->filter(function($filter){
// 设置id字段的范围查询
$filter->equal('id','ID');
...
});
// 规格选择器
$grid->selector(function(Grid\Tools\Selector $selector){
//性别
$selector->select('gender','性别',[0=>'男',1=>'⼥',''=>'未标明']);
});
});
}
}
使⽤数据仓库存在的问题
1、框架⾃带的导出功能⽆法正常使⽤,例如在导出当前页时,会报错 ErrorException Division by zero
原因在于 vendor\laravel\framework\src\Illuminate\Pagination\LengthAwarePaginator.php 构造⽅法中⽆法⾃动获取分页相关数据,此时需要⾃定义导出功能,可见
2、选择某⾏⽆法正常计算选中⾏总量,在⾃定义Action、Tool时getKey()⽅法⽆法正常使⽤。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。