su-12941 / base-repository-laravel8
Laravel 的基础仓库实现
dev-main
2021-11-22 09:09 UTC
Requires
- php: >=7.1
- illuminate/database: ~5.1
- illuminate/support: ~5.1
Requires (Dev)
- mockery/mockery: ^0.9.4
- phpunit/phpunit: ^4.8
This package is auto-updated.
Last update: 2024-09-22 15:36:26 UTC
README
要开始使用 基础仓库,使用 Composer 将包添加到项目的依赖中
composer require su-1294/base-repository-laravel
配置
Laravel 5.5+
Laravel 使用包自动发现,因此不需要您手动添加 ServiceProvider。
Laravel < 5.5
如果您不使用自动发现,将 ServiceProvider 添加到 config/app.php 文件中的 providers 数组中
'providers' => [ // Other service providers... Kenini\RepositoryServiceProvider::class, ],
基本用法
接下来,您已准备好使用仓库。如果您想创建与模型对应的仓库(例如:UserRepository),请运行以下命令行
php artisan make:repostitory UserRepository -i
运行此命令时,包会自动在 Repository 目录下生成两个文件:UserRepository 和 UserRepositoryInterface。UserRepository 继承自 AbstractRepository,因此您可以使用 AbstractRepository 中的方法
<?php namespace App\Repositories; use App\Models\User; use Kenini\Repository\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); } }
在 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); } }
获取用户详细信息
在控制器中,您想使用仓库通过 ID 查找用户
<?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use App\Repositories\Contracts\UserRepositoryInterface; class UserController extends Controller { /** * @var UserRepositoryInterface */ private $userRepository; public function __construct(UserRepositoryInterface $userRepository ) { $this->userRepository = $userRepository; } public function show($id) { $user = $this->userRepository->findById($id); return response()->json($user); } }
基础仓库中的所有函数
public function find(array $conditions = []);
public function findOne(array $conditions);
public function findById(int $id);
public function create(array $attributes);
public function update(Model $model, array $attributes = []);
public function save(Model $model);
public function delete(Model $model);
public function get($query);
public function destroy(array $ids);
public function findCount(array $conditions);
public function toBase($query);
public function updateMultiple(Builder $query, array $attributes = []);
public function updateOrCreate(array $attributes, array $values);
public function findAll();
public function findByIds(array $ids);
public function model();
public function makeModel();
public function resetModel();