nanvaie / 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
。
用法
为了轻松使用此包,您可以使用以下命令。它将为用户表创建所有必需的组件,如实体、IRepository、Repository、MySqlRepository、RedisRepository、Resource和Factory。
php artisan repository:make-all --table_names=users --strategy_name=QueryCacheStrategy
艺术家的命令列表
选项说明
-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仓库添加一个特质。
示例1:为名为'users'的表创建一个新实体。
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行,或者如果行数超过这个数字但查询不是非常独特且有相似的查询,这个策略效果很好。
此策略为每个存储库的缓存分配一个标签,每次有变更时都会清除所有缓存数据。这确保了数据始终是最新的和有效的。
TemporaryCacheStrategy
当数据量较大或数据种类较多,并且用户可以容忍一定的数据更新延迟时,临时缓存策略(TemporaryCacheStrategy)非常有用。我们会缓存每一个请求,并将非关键性的更改延迟反映到实时数据中。例如,如果我们有一个帖子,我们编辑其内容,我们可以缓存旧版本直到缓存过期。我们根据用户能够接受的最大延迟设置每个数据项的缓存过期时间。这样,我们使用这种策略临时缓存数据。
可清除的临时缓存策略(ClearableTemporaryCacheStrategy)
有时,当发生一些关键性更改时,我们需要从临时缓存中清除数据。可清除的临时缓存策略适用于这些情况。
php artisan repository:make-all --table_names=users --strategy_name=QueryCacheStrategy