mheads / yii2-data-db
Adapter for using Yii2 DB queries as yiisoft/data readers.
1.0.0
2026-09-17 08:58 UTC
Requires
- php: 8.3 - 8.5
- yiisoft/data: ^2.0
- yiisoft/yii2: ^2.0.53
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.94
- phpunit/phpunit: ^12.5
- vimeo/psalm: ^6.16
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-17 09:03:48 UTC
README
Adapter for using yii\db\QueryInterface as a yiisoft/data data reader.
Russian documentation: README.ru.md.
Yii2 Query / ActiveQuery -> Yiisoft\Data\Reader\DataReaderInterface
Installation
composer require mheads/yii2-data-db
Usage
use Mheads\Yii2DataDb\QueryDataReader; use yii\db\Query; use Yiisoft\Data\Reader\Filter\Equals; use Yiisoft\Data\Reader\Sort; $reader = new QueryDataReader( query: (new Query())->from('product'), db: Yii::$app->db, sort: Sort::only(['id'])->withOrderString('-id'), filter: new Equals('category', 'mobile'), ); $rows = iterator_to_array($reader->read(), false); $count = $reader->count();
yii\db\ActiveQuery is supported too:
$reader = new QueryDataReader( query: Product::find(), );
Included
QueryDataReader- data reader for Yii2 queries.QueryDataReaderInterface- data reader contract.QueryFilterCompiler- convertsyiisoft/datafilters into Yii2 conditions.ConditionFilter- existing Yii2 condition asFilterInterface.
QueryDataReader supports filtering, sorting, limit, offset, count, HAVING, and batched reading.
Field Map
Use fieldMap when public field names differ from SQL field names:
$reader = new QueryDataReader( query: $query, db: Yii::$app->db, fieldMap: [ 'createdAt' => 'created_at', 'total' => new yii\db\Expression('COUNT(*)'), ], );
Raw Condition
use Mheads\Yii2DataDb\ConditionFilter; $reader = $reader->withFilter( new ConditionFilter(['or', ['status' => 'new'], ['status' => 'paid']]), );