nathanbarrett / laravel-repositories

Laravel应用的仓库服务层

v1.1.0 2024-04-20 22:49 UTC

This package is not auto-updated.

Last update: 2024-09-22 23:02:02 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

仓库旨在作为模型和高级目标(如服务)之间的中间层。它们旨在抽象数据层并提供数据访问的干净API。当操作主要或全部关于相关模型时使用仓库。

使用仓库的Laravel应用层

  • 服务 - 最高的抽象层。使用仓库和模型执行操作。例如:StripePaymentService
  • 仓库 - 中间的抽象层。使用模型(不仅仅是相关模型)执行操作。例如:UserRepository
  • 模型 - 最低的抽象层。代表数据库中的一个单独表。仅用于关系和轻量级数据转换。例如:User

安装

您可以通过composer安装此包

composer require nathanbarrett/laravel-repositories

用法

首先创建一个仓库类

use NathanBarrett\LaravelRepositories\Repository;
use App\Models\User;

/**
* @extends Repository<User>
 */
class UserRepository extends Repository
{
    public function modelClass(): string
    {
        return User::class;
    }
}

泛型用于确保您的IDE可以提供代码补全和类型提示。

class UserController extends Controller
{
    public function __construct(private UserRepository $userRepository)
    {
       //
    }

    public function store(Request $request)
    {
        // The IDE will understand that $user is an instance of User
        $user = $this->userRepository->create($request->all());
        return response()->json($user);
    }
}

或者,您可以使用命令快速创建一个

php artisan make:repository UserRepository

测试

composer test

变更日志

请参阅CHANGELOG了解最近更改的更多信息。

贡献

请参阅CONTRIBUTING了解详细信息。

许可证

MIT许可证(MIT)。请参阅许可证文件获取更多信息。