eghamat24 / database-repository
仓储模式
Requires
- php: ^8.1
- ext-json: *
- ext-pdo: *
- illuminate/cache: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/console: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/database: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/support: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- laravel/framework: ^8.0|^9.0|^10.0|^11.0
README
安装
使用以下命令将此包添加到composer开发需求中。
composer require eghamat24/database-repository --dev
设置Laravel仓储
然后在控制台中运行以下命令,将必要的资源发布到您的项目目录。
php artisan vendor:publish --tag=database-repository-config
设置Lumen仓储
导航到bootstrap
文件夹中的app.php
,并在服务提供程序注册后添加以下行
// snip if ($app->environment('local', 'testing')) { $app->register(Eghamat24\DatabaseRepository\DatabaseRepositoryServiceProvider::class); } // snip
将repository.php 复制到项目根目录下的项目配置文件夹。
注意:确保在更改后运行composer dump-autoload
。
用法
要轻松使用此包,您可以运行以下命令。它将为用户表创建所有必要的组件,例如Entity、IRepository、Repository、MySqlRepository、RedisRepository、Resource和Factory。
php artisan repository:make-all --table_names=users --strategy_name=QueryCacheStrategy
artisan命令列表
选项解释
-f|--force
: 强制命令覆盖现有文件。-d|--delete
: 删除已创建的文件。-k|--foreign-keys
: 尝试检测表的键。-g|--add-to-git
: 将创建的文件添加到git仓库。-a|--all-tables
: 使用所有现有表。--table_names=
: 添加表名,用逗号分隔名称。--selected_db=
: 使用Mysql
或Redis
,如果没有发送,则从config/repository.php
返回值--strategy_name=
: 根据您选择的策略添加Redis仓储的trait
示例1. 为名为'users'的表创建一个新的Entity。
php artisan repository:make-entity users
示例2. 创建两个名为'users'和'customers'的表的必要类,并启用外键选项。
php artisan repository:make-all --table_names=users,customers -k
示例3. 为所有表创建必要类,并启用外键选项(这可以用于新项目)。
php artisan repository:make-all -a -k
缓存策略
我们根据记录数量和变更频率创建了一些缓存数据策略
SingleKeyCacheStrategy
SingleKeyCacheStrategy非常适合行数很少的表,例如少于50条记录。此策略创建一个缓存键并将所有数据存储在它上面。然后,当应用查询数据时,它会遍历数据并返回结果。
此策略有一个缓存键,每当有变化时都会清除所有缓存数据。这确保了数据始终是最新的且有效的。
QueryCacheStrategy
QueryCacheStrategy适用于变更频率低且记录数量不多的表。例如,如果表有少于10,000行,或者行数超过10,000但查询不独特且有类似的查询,则此策略效果良好。
此策略为仓储的每个缓存分配一个标签,每当有变化时都会清除所有缓存数据。这确保了数据始终是最新的且有效的。
TemporaryCacheStrategy
TemporaryCacheStrategy在处理大量或多样化的数据时非常有用,用户可以容忍数据更新的延迟。我们缓存每个请求,并将不至关重要的更改延迟到实时反映。例如,如果我们有一个帖子并编辑其内容,我们可以缓存旧版本直到缓存过期。我们根据用户可以接受的最大延迟为每个数据项设置缓存过期时间。这样,我们使用此策略临时缓存数据。
ClearableTemporaryCacheStrategy
有时,当发生一些关键变更时,我们需要清除临时缓存中的数据。可清除临时缓存策略(ClearableTemporaryCacheStrategy)适用于这些场景。
php artisan repository:make-all --table_names=users --strategy_name=QueryCacheStrategy