horat1us / yii2-criteria
Criteria implementation for Yii2
3.0.0
2026-10-29 15:40 UTC
Requires
- php: >=8.4
- ext-pdo: *
- yiisoft/yii2: ^2.0.35
Requires (Dev)
- horat1us/yii2-asset-free: ^1.0.1
- phpunit/phpunit: ^12.0
- squizlabs/php_codesniffer: ^3.5
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-29 16:15:47 UTC
README
This package helps dealing with multiple search params.
Installing
Using composer:
composer require horat1us/yii2-criteria
Usage
This code will find SomeActiveRecord with specified id (from URL).
<?php use YourApp\SomeActiveRecord; use yii\db\Query; use yii\base\Model; use Horat1us\Yii\Criteria\Interfaces\CriteriaInterface; use Horat1us\Yii\Criteria\Factories\QueryFactory; $query = SomeActiveRecord::find(); $factory = new QueryFactory($query); $factory->push(new class extends Model implements CriteriaInterface { public $id; public function rules() { return [['id', 'integer',]]; } public function formName() { return 'IdCriteria'; } public function apply(Query $query): Query { return $query->andWhere(['=', 'id', (int)$this->id]); } }); $record = $factory->apply(\Yii::$app->request->queryParams)->one(); print_r($record->id, $_GET['IdCriteria']['id']); // true
Pre-cooked criteria
Factories
Tips
To set default params for criteria (for example, PaginationCriteria) configure your yii\db\Container
in bootstrap.php file. PaginationCriteria also falls back to these page and pageSize on invalid input:
<?php use Horat1us\Yii\Criteria\PaginationCriteria; Yii::$container->set( PaginationCriteria::class, [ 'class' => PaginationCriteria::class, 'page' => 0, 'pageSize' => 10, 'allowedPageSize' => [1, 5, 10,], ] );
Contributors
License
Todo
- Tests