tungnt / laravel-repository
使用 Artisan CLI 创建仓库
1.0.4
2022-12-11 17:01 UTC
README
仓库设置灵感来自 theanik/laravel-more-command 包。此包是那个包的扩展版,经过调整(但完全独立),并拥有自己的接口。
安装
通过 Composer
composer require tungnt/laravel-repository --dev
或在您的 composer.json 的 require-dev 部分添加以下内容并运行 composer update
"require-dev": { "tungnt/laravel-repository": "^1.0.4" }
发布包配置
php artisan vendor:publish --provider="Tungnt\LaravelRepository\RepositoryServiceProvider" --tag="tungnt/config" --tag="tungnt/Repositories"
要更改默认命名空间 [config/repository.php]
<?php return [ 'repository-namespace' => 'App', // Your Desire Namespace for Repository Classes 'service-namespace' => 'App', // Your Desire Namespace for Service Classes ]
基本用法
创建仓库类。
php artisan make:repository your-repository-name
示例
php artisan make:repository UserRepository
或
php artisan make:repository User
在目录中创建仓库类。
php artisan make:repository folder/your-repository-name
示例
php artisan make:repository User/UserRepository
或
php artisan make:repository User/User
以上将在 App 目录内创建一个 Repositories 目录。
使用接口创建仓库。
php artisan make:repository UserRepository -i
或
php artisan make:repository User/UserRepository -i
这里需要额外添加 -i
标志。以上将在 App 目录内创建一个 Repositories 目录。
使用模型创建仓库。
php artisan make:repository UserRepository -m
或
php artisan make:repository User/UserRepository -m
这里需要额外添加 -m
标志。
或者您也可以使用模型和接口创建仓库
php artisan make:repository User/UserRepository -mi
创建仓库资源。
php artisan make:repository UserRepository --resource
创建的仓库类的示例
文件仓库
<?php namespace App\Repositories; use App\Repositories\BaseRepository; use App\Repositories\Interfaces\UserRepositoryInterface; class UserRepository extends BaseRepository implements UserRepositoryInterface { public function getModel() { return \App\Models\User::class; } public function getUser() { return []; } }
文件接口
<?php namespace App\Repositories\Interfaces; use App\Repositories\Interfaces\RepositoryInterface; interface UserRepositoryInterface extends RepositoryInterface { public function getUser(); }
文件控制器
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Repositories\Interfaces\UserRepositoryInterface; class UserController extends Controller { /** * @var UserRepositoryInterface|\App\Repositories\Repository */ protected $userRepo; public function __construct(UserRepositoryInterface $user) { $this->userRepo = $user; } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $user = $this->userRepo->getAll(); return view('', ['user' => $user]); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { // } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $data = $request->all(); //... Validation here $user = $this->userRepo->create($data); return redirect()->route(''); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { $user = $this->userRepo->find($id); return view('', ['user' => $user]); } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { // } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { $data = $request->all(); //... Validation here $user = $this->userRepo->update($id, $data); return redirect()->route(''); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $this->userRepo->delete($id); return redirect()->route(''); } }
创建服务
您可以使用 artisan cli 创建新的 Service 类
php artisan make:service your-service
或
php artisan make:service your-service -i
许可证
MIT 许可证 (MIT)。请参阅 许可证 了解更多信息。