horat1us/yii2-criteria

Criteria implementation for Yii2

Maintainers

Package info

github.com/Horat1us/yii2-criteria

pkg:composer/horat1us/yii2-criteria

Transparency log

Statistics

Installs: 1 785

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 1

2.0.1 2026-07-22 11:34 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:

<?php

use Horat1us\Yii\Criteria\PaginationCriteria;

Yii::$container->set(
    PaginationCriteria::class,
    [
        'class' => PaginationCriteria::class,
        
        'page' => 1,
        'pageSize' => 10,
        
        'allowedPageSize' => [1, 5, 10,],
    ]
);

Contributors

Alexander Letnikow

License

MIT

Todo

  • Tests