Laravel Admin 写一个筛选器字段名为status1是支付0是未支付
以下是一个基本的筛选器,可以根据status字段值过滤出支付或未支付的数据:
<?php
namespace App\Admin\Filters;
use Encore\Admin\Facades\Admin;
use Encore\Admin\Grid\Filter;
class StatusFilter extends Filter
{
// 筛选器名称,可自定义
protected $name = '状态';
// 筛选器对应的字段名
protected $column = 'status';
public function __construct()
{
// 筛选器选项,可以自定义
$this->select([
0 => '未支付',
1 => '已支付',
]);
}
public function apply($value)
{
// 根据筛选器选项处理查询条件
switch ($value) {
case 0:
return $this->where($this->column, 0);
case 1:
return $this->where($this->column, 1);
default:
break;
}
}
}
在使用筛选器的地方,可以这样调用:
use App\Admin\Filters\StatusFilter;
// ...
protected function grid()
{
$grid = new Grid(new Model);
$grid->filter(function($filter) {
$filter->disableIdFilter(); // 禁用默认的ID筛选器
$filter->filter('status', StatusFilter::class); // 使用自定义的状态筛选器
});
// ...
}
以上代码中,StatusFilter 是自定义的筛选器类,$column 属性指定了要过滤的字段名,$name 属性指定了显示在筛选器上的名称,$select() 方法指定了筛选器选项,apply() 方法根据选项值处理查询条件。在使用筛选器时,通过 $filter() 方法将自定义的筛选器类传递给 $column 参数即可。
原文地址: https://www.cveoy.top/t/topic/09q 著作权归作者所有。请勿转载和采集!