关于DCAT的规格筛选器,在数据源有查询条件的情况下失效的问题?
如果表格里面已经有数据源查询条件,再使用规格筛选器,规格筛选器的筛选失效!
//数据源查询
$grid->model()->where('share',1)->orWhere('lne_id',Employee::where('uid',Admin::user()->id)->get()[0]->id);
//规格筛选器
$grid->selector(function (Grid\Tools\Selector $selector){
$selector->select('dep_id','所属部门',Department::all()->pluck('name','id'));
$selector->select('share','是否公开',[0=>'否',1=>'是']);
});
由于设计需要,我需要对数据源进行查询,但是查询之后,再使用规格筛选器就会失去作用。
只有取消数据源查询,规格筛选器会再次生效。
请教各位前辈、高人,是bug还是我哪里出错了!
今天抽空测试了一下encore/laravel-admin的数据查询和规格筛选器,测试用的encore/laravel-admin版本为1.8.11,发现数据查询和规格筛选器并不冲突,初步判断可能是dcat/laravel-admin基于的laravel-admin版本问题,我使用的dcat/laravel-admin版本为1.7.6。
继续测试了一下dcat/laravel-admin的最新2.x版本,确实是没有冲突发生。所以最终的解决方式会不会是更新到最新版即可。
然而:
将原平台更新到最新版本发现还是出现问题,问题聚焦到数据查询的语句写法了。
上面的orwhere查询语句去掉后就能恢复正常。但如果使用where语句又会恢复。如何解决,如下:
将原来的一句写成两句就可以了。
总结:
请务必将版本更新到最新版,老版本比如1.7.6,还是会冲突,所以建议使用最新的dcat 2.x版,然后将一句变为两句即可解决。但是最终发现这种方法还是有问题,就是筛选器在筛选与数据源查询语句相同内容时还会有冲突,估计需要等待大神门后续的更新了。