horat1us / yii2-criteria

为Yii2实现的Criteria

1.0.11 2019-05-25 08:56 UTC

README

此包帮助处理多个搜索参数。

安装

使用composer

composer require horat1us/yii2-criteria

需要PHP >= 7.0,yii2 >= 2.0.13

使用方法

此代码将找到具有指定id的SomeActiveRecord(来自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

预准备的标准

工厂

技巧

要为标准(例如,分页标准)设置默认参数,请配置bootstrap.php文件中的yii\db\Container

<?php

use Horat1us\Yii\Criteria\PaginationCriteria;

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

贡献者

Alexander Letnikow

许可

MIT

待办事项

  • 测试