以下是一个基本的筛选器,可以根据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 参数即可。

Laravel Admin 写一个筛选器字段名为status1是支付0是未支付

原文地址: https://www.cveoy.top/t/topic/09q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录