Filter Yii2:如何在自定义ActiveDataProvider中进行筛选?

Filter Yii2:如何在自定义ActiveDataProvider中进行筛选?,filter,yii2,Filter,Yii2,我创建了这个ActiveDataProvider: $dataProvider = new ActiveDataProvider([ 'query' => $query->asArray(), // It is a simple SQL query. 'key' => 'item', 'sort' => [ 'attributes' => [ 'item', 'quantity'

我创建了这个ActiveDataProvider:

$dataProvider = new ActiveDataProvider([
    'query' => $query->asArray(), // It is a simple SQL query.
    'key' => 'item',
    'sort' => [
        'attributes' => [
            'item',
            'quantity',
        ],
    ]
]);
我需要为项目数量添加过滤器,因为它不起作用(它不搜索):


您必须没有在SearchModel方法中设置属性项和数量

您必须将它们设置为在SearchModel中

public function rules()
{
    return [
        [['item', 'quantity'], 'safe'],
    ];
}
在您的情况下,您的数据提供者应该是这样的:

// It is not necessary to use "$query->asArray()", because your "$query" itself is object of ActiveQuery
    $dataProvider = new ActiveDataProvider([
        'query' => $query,
        'key' => 'item',
    ]);

您想根据这些属性进行升序还是降序排序?不,没关系。我只需要在字段内书写和搜索。你面临的问题是什么?你的问题不清楚为什么不起作用?显示gridview的完整搜索模型和视图代码。从ActiveDataProvider中删除排序后重试。