horat1us / yii2-criteria
为Yii2实现的Criteria
1.0.11
2019-05-25 08:56 UTC
Requires
- php: >=7.0
- yiisoft/yii2: ^2.0.13.1
Requires (Dev)
- phpunit/phpunit: ^6.5
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,], ] );
贡献者
许可
待办事项
- 测试