Search by

horat1us / yii2-criteria

Horat1us

Criteria implementation for Yii2

Package info

github.com/Horat1us/yii2-criteria

pkg:composer/horat1us/yii2-criteria

Statistics

Installs: 2 046

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 1

3.0.0 2026-10-29 15:40 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

Alexander Letnikow

License

MIT

Todo

  • Tests