mheads / yii-filestorage-db
Requires
- php: 8.3 - 8.5
- mheads/yii-filestorage: 1.0.0-beta2
- yiisoft/db: ^2.0.1
Requires (Dev)
- ext-pdo: *
- friendsofphp/php-cs-fixer: ^3.94
- httpsoft/http-message: ^1.1
- phpunit/phpunit: ^12.5
- vimeo/psalm: ^6.16
- yiisoft/cache: ^3.0
- yiisoft/db-migration: ^2.0
- yiisoft/db-mssql: ^2.0
- yiisoft/db-mysql: ^2.0
- yiisoft/db-oracle: ^2.0
- yiisoft/db-pgsql: ^2.0
- yiisoft/db-sqlite: ^2.0
- yiisoft/dummy-provider: ^1.1
- yiisoft/test-support: ^3.2
Suggests
- yiisoft/db-migration: For applying package migrations.
- yiisoft/db-mssql: For MSSQL database support.
- yiisoft/db-mysql: For MySQL database support.
- yiisoft/db-oracle: For Oracle database support.
- yiisoft/db-pgsql: For PostgreSQL database support.
- yiisoft/db-sqlite: For SQLite database support.
This package is auto-updated.
Last update: 2026-06-04 13:12:00 UTC
README
Database metadata repository adapter for mheads/yii-filestorage.
The package provides DbRepository, a RepositoryInterface implementation that stores file metadata in a database through yiisoft/db.
Physical file storage remains the responsibility of the core package stores, for example PublicFileSystemStore and PrivateFileSystemStore.
Use it when you want the core Storage facade with persistent database-backed file metadata.
Installation
composer require mheads/yii-filestorage-db
Also install the database driver used by your project:
composer require yiisoft/db-mysql
Apply the migration for mh_filestorage_file before adding files:
For full requirements and supported drivers, see Prerequisites and installation.
Quick Start
use Mheads\Yii\Filestorage\Db\DbRepository; use Mheads\Yii\Filestorage\Storage; use Mheads\Yii\Filestorage\StorageProvider; use Mheads\Yii\Filestorage\Store\FileSystem\PublicFileSystemStore; $repository = new DbRepository($db); $storage = new Storage( repository: $repository, stores: [ new PublicFileSystemStore( name: 'upload', path: '/app/runtime/upload', baseUrl: 'https://cdn.example.com/upload', ), ], defaultStoreName: 'upload', defaultGroupName: 'common', ); StorageProvider::set($storage);
$file = $storage->add($uploadedFile, groupName: 'products'); $url = $file->getUrl(); $sameFile = $storage->findById($file->getId()); if($sameFile !== null) { $storage->remove($sameFile); }
StorageProvider::set() is required only when file objects call getUrl(), getContent(), or getResource() directly.
If you do not register the provider, call these methods through Storage instead.