Php 表格yii2中不存在的网格视图中自定义列的过滤器

Php 表格yii2中不存在的网格视图中自定义列的过滤器,php,yii,yii2,kartik-v,Php,Yii,Yii2,Kartik V,我在gridview中添加了这个“sla_status”字段,一切正常,唯一的问题是我无法为此设置筛选值。 “sla_状态”不在我的表中 [ 'label' => Yii::t('app','Sla Status'), 'format' => 'raw', 'filterType' => GridView::FILTER_SELECT2, 'filter' => $status

我在gridview中添加了这个“sla_status”字段,一切正常,唯一的问题是我无法为此设置筛选值。 “sla_状态”不在我的表中

[
            'label' => Yii::t('app','Sla Status'),
            'format' => 'raw',
            'filterType' => GridView::FILTER_SELECT2,
            'filter' => $status,
            'filterWidgetOptions' => [ 
                    'options' => [ 
                            'placeholder' => Yii::t('app','All...' )
                    ],
                    'pluginOptions' => [ 
                            'allowClear' => true 
                    ] 
            ],

            'headerOptions' => ['style' => 'text-align:center;color:#337ab7'],
            'value' => function ($model, $key, $index, $widget)
            {           }   
            ]

$status是
$status=array('0'=>Yii::t('app','Inactive'),'1'=>Yii::t('app','Active')

在搜索模型中,您应该添加属性sla\u status 并在search()中添加所需的位置。 例如:

class TaskSearch extends Task{
public $sla_status;
public function search($params){ 
    $query = Task::find();
    if($this->sla_status){ $query->andWhere(...); } 
}}
在模型或搜索模型的规则方法中将字段“sla_状态”添加到“安全”中,如


[['sla_状态'],'safe'],

在搜索模型的规则数组中添加公共变量$sla_status,并将sla_status添加为safe

public $sla_status;
public function rules()
{
    return [
        [['sla_status'], 'safe'],
    ];
}

如果它在一个相关的表中,那么你需要添加这个具有关系的表,然后使用该表对其进行筛选。不,它不是任何表,我正在根据任务的到期日期计算“sla状态”的值。因此,该字段实际上不存在于数据库本身的任何位置。我认为筛选将基于日期,也不基于状态。。。第二个想法是,您需要比较结果,并使用afterFind事件过滤数据或使用internalFind