Как фильтровать выборку значений из таблицы в REST Yii с помощью других полей(не только id)?

В Yii фильтрация выборки значений из таблицы в REST контроллере с использованием других полей больше чем только id, может быть реализована с помощью запроса к базе данных, который использовал бы условия WHERE.

Для начала, вам необходимо определить модель, соответствующую вашей таблице. В модели вы можете определить атрибуты, которые будут использоваться для фильтрации.

Например, если у вас есть таблица "users" с атрибутами "id", "name" и "age", и вы хотите фильтровать пользователей по их именам и возрасту, вам необходимо создать модель, соответствующую этой таблице, и определить атрибуты "name" и "age":

class User extends yiidbActiveRecord
{
    // ...
    
    public function rules()
    {
        return [
            [['name', 'age'], 'safe'],
        ];
    }
    
    // ...
}

Затем в вашем REST контроллере вы можете использовать фильтры в методе actionIndex() для применения условий WHERE к запросу:

class UserController extends yiirestActiveController
{
    public $modelClass = 'appmodelsUser';
    
    public function actions()
    {
        $actions = parent::actions();
        unset($actions['index']);
        return $actions;
    }
    
    public function actionIndex()
    {
        $queryParams = Yii::$app->request->getQueryParams();
        
        $model = new $this->modelClass;
        
        foreach ($queryParams as $attribute => $value) {
            if ($model->hasAttribute($attribute)) {
                $model->setAttribute($attribute, $value);
            }
        }
        
        $dataProvider = new ActiveDataProvider([
            'query' => $model::find()->where($model->attributes),
        ]);
        
        return $dataProvider;
    }
}

Теперь, вы можете отправить GET запрос на эндпоинт /users с параметрами фильтрации, например:

GET /users?name=John&age=25

Такой запрос вернет пользователей с именем "John" и возрастом 25.

Учтите, что фильтр будет работать только для атрибутов, объявленных в модели, а также они должны быть указаны в правилах валидации модели (метод rules()). Для фильтрации по другим полям, вам необходимо будет добавить эти атрибуты в правила валидации модели.