rebbulldev / dev
该软件包最新版本(2.2)没有可用的许可证信息。
2.2
2022-09-21 03:55 UTC
Requires
- intervention/image: ^3.0@alpha
README
要开始使用 基础仓库,请使用 Composer 将该软件包添加到项目依赖项
composer require rebbull/dev
配置
Laravel
'providers' => [ // Other service providers... Rebbull\RepositoryServiceProvider::class, ],
基本用法
接下来,您可以开始使用仓库。如果您想创建与模型对应的仓库(例如:UserRepository),请运行以下命令行
php artisan make:repository UserRepository -i
运行此命令后,软件包会自动在 Repository 目录中生成两个文件:UserRepository 和 UserRepositoryInterface。UserRepository 继承自 AbstractRepository,因此您可以使用 AbstractRepository 中的方法。
<?php namespace App\Repositories; use App\Models\User; use Rebbull\Repository\Contracts\AbstractRepository; use App\Repositories\Contracts\UserRepositoryInterface; class UserRepository extends AbstractRepository implements UserRepositoryInterface { protected $model; /** * UserRepository construct * * @param mixed $model * * @return void */ public function __construct(User $model) { parent::__construct($model); } }
接下来,创建控制器,运行以下命令行
php artisan make:con UserController -c
运行此命令后,软件包会自动在 Http/Controller/Api 目录中生成 UserController 文件。UserController 继承自 baseController。
<?php namespace App\Http\Controllers\Api; use App\Repositories\Contracts\UserRepositoryInterface; use Rebbull\Http\Controllers\Api\BaseController; class UserController extends BaseController { protected $tag; public function __construct(UserRepositoryInterface $tag) { parent::__construct($tag); } }
在 AppServiceProvider 中注册
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use App\Repositories\UserRepository; use App\Repositories\Contracts\UserRepositoryInterface; class AppServiceProvider extends ServiceProvider { /** * Bootstrap any application services. * * @return void */ public function boot() { // } /** * Register any application services. * * @return void */ public function register() { $this->app->bind(UserRepositoryInterface::class, UserRepository::class); } }
检索用户详情
在控制器中,您可以完全重写您想要的方法
<?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use App\Repositories\Contracts\UserRepositoryInterface; use Rebbull\Http\Controllers\Api\BaseController; class UserController extends BaseController { /** * @var UserRepositoryInterface */ private $user; public function __construct(UserRepositoryInterface $user ) { $this->user = $user; } public function show($id) { // } }
基础仓库中的所有函数
public function all(array $attributes, array $relations = []): Collection;
public function store(array $attributes): ?Model;
public function show(int $id): ?Model;
public function update(int $id ,array $attributes): bool;
public function destroy(int $id): bool;
public function allTrashed(): Collection;
public function findTrashedById(int $id): ?Model;
public function findOnlyTrashedById(int $id): ?Model;
public function restoreById(int $id): bool;
public function permanentlyDeleteById(int $id): bool;