hnabeel64 / repopackage
laravel 中简化仓库模式的工具,由 hnabeel64 创建
dev-main
2022-10-21 12:50 UTC
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.5
This package is not auto-updated.
Last update: 2024-09-21 20:43:50 UTC
README
通过一条命令创建仓库服务类、接口、预定义方法和模型。简化 CRUD 生成,方便仓库模式的使用者开发。
repopackage 是针对初学者到中级开发者的仓库设计模式实现的想法。节省开发者的时间,只需安装包并发布资产。无需手动添加模型,只需运行命令,repopackage 会处理其他事情。 ;)
-
使用以下命令安装包:
composer require hnabeel64/repopackage
-
然后发布供应商:
php artisan vendor:publish --tag=repository
-
现在,当存在新表并且你想要为其创建 CRUD 时,只需在控制台中写入:
php artisan repository:make {TableName}
如果你还需要模型,它会询问模型确认,你只需要在模型中定义protected $fillable = [];
并在控制器中尝试捕获方法。
用法
仓库模式使用简单
当你发布供应商并通过命令创建新的仓库时,这个基类接口会附带预定义的方法,例如
public function findAll(): Collection; public function findById($id): ?Model; public function storeRecord(array $array): ?Model; public function updateRecord($id, array $array): bool; public function deleteRecord($id): bool; public function findLatest(): Model; public function findByUpdated(): Model;
这些是仓库和接口中预定义的方法,它们都通过服务提供者动态绑定到服务容器中。
子接口包含以下额外方法
public function findAll(): Collection; public function findById($id): ?Model; public function storeRecord(array $array): ?Model; public function updateRecord($id, array $array): bool; public function deleteRecord($id): bool; public function findLatest(): Model; public function findByUpdated(): Model; public function findBy($field, $value): ?Model; public function search($field, $value): ?Model;
⚠️ 注意:你必须在控制器中实现这些方法并使用 try-catch 块。通过依赖注入导入仓库类示例
use App\Repository\SlugRepository; private $slug; public function __construct(SlugRepository $slug) { $this->slug = $slug; } public function search(Request $request) { try { $name = $request->name; $field = 'name'; $result = $this->slug->search($field, $name); if(!empty($result)) { return $result; } return 'no record found'; } catch (\Throwable $th) { return $th; } }
如果你发现任何漏洞或问题,可以通过电子邮件联系我或在这里创建一个 issue。任何贡献者都受欢迎 :)