jbernavaprah / eloquent-fs
A laravel/lumen FileSystem,使用 Eloquent 作为数据存储,灵感来源于 GridFS (MongoDB)
1.1.2
2021-05-19 14:05 UTC
Requires
- php: ^7.4|^8.0
- illuminate/database: ^8.0
- illuminate/events: ^8.0
- illuminate/filesystem: ^8.0
- illuminate/pagination: ^8.0
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: 9.5.x-dev
This package is auto-updated.
Last update: 2024-09-24 20:23:05 UTC
README
A laravel/lumen filesystem wrapper that use eloquent as datastore, inspired by GridFS (MongoDB)
注意:尚未准备好用于生产环境!
注意2:仍在开发中!
安装
composer install jbernavaprah/eloquent-fs
然后使用以下命令在数据库中创建所需的表:
php artisan migrate
这将使用标准的laravel迁移,因此也将使用您项目上设置默认连接。
基本用法
要使用此包装器,您需要将路径前缀为 efs://
。路径将被用作数据库中文件的 id
。
touch('efs://file.txt'); // file.txt will be ID of this file. file_put_contents('efs://file.txt', "foobar\n"); echo file_get_contents('efs://file.txt'); // "foobar\n" copy('efs://file.txt', 'efs://other_file.txt'); echo file_get_contents('efs://other_file.txt'); // "foobar\n" unlink('efs://file.txt'); unlink('efs://other_file.txt');
使用 Eloquent 模型
您还可以直接使用 EloquentFS 中的 Eloquent 模型。
use JBernavaPrah\EloquentFS\Models\FsFile; $file = new FsFile(); $file->id = 'file.txt'; // if not provided, will generated as uuid $file->write("foobar", $append=true); // 6 $file->read($offset =3, $length = 3); // "bar" $file->read($offset =0, $length = 6); // "foobar" $file->write("foobar", $append=true); // 6 $file->read(); // foobarfoobar $file->delete(); // Delete
深度配置
不同的连接
如果您想更改连接,请在您的 AppServiceProvider::register()
方法中添加
\JBernavaPrah\EloquentFS\EloquentFS::$connection = 'different_connection';
禁用迁移
如果您想禁用迁移,请在您的 AppServiceProvider::register()
方法中添加
\JBernavaPrah\EloquentFS\EloquentFS::$runMigrations = False;
现在您将负责创建和运行所需的迁移。您可以在 ./database/migrations
路径下查看这些迁移。
如何帮助
提交一个 PR,运行所有测试,我很乐意合并它!
缺少实现
- 使用
flock()
锁定文件。 - 需要性能评估。与 MongoDB 的比较将非常棒!
- 在生产环境中使用 :D
- 需要测试审查。
- 需要实现
ftruncate()
。