jetcod/eloquent-repository

此包是 Laravel 中仓库模式的实现。

1.4.0 2024-01-28 16:29 UTC

This package is auto-updated.

Last update: 2024-09-12 20:26:16 UTC


README

Actions Status

Latest Stable Version Total Downloads License

需求

  • PHP ^8.0 或更高版本
  • Laravel 9.0 或更高版本
  • Eloquent 9.0 或更高版本

安装

您可以使用 Composer 安装此库

composer require jetcod/eloquent-repository

用法

要使用此库,您需要为每个 Eloquent 模型创建一个仓库类。您可以扩展 Jetcod\LaravelRepository\Eloquent\BaseRepository 类开始,或使用 artisan 命令生成仓库类

php artisan make:repository UserRepository

以下是一个 UserRepository 类的示例

<?php

namespace App\Repositories;

use App\Models\User;
use Illuminate\Database\Eloquent\Model;
use Jetcod\LaravelRepository\Eloquent\BaseRepository

class UserRepository extends BaseRepository
{
    protected function getModelName()
    {
        return User::class;
    }
}

在此示例中,UserRepository 扩展了 BaseRepository 类,并通过实现 getModelName() 方法将仓库连接到 User 模型。然后您可以使用仓库对 User 模型执行 CRUD 操作,如下所示

<?php

namespace App\Services;

use App\Models\User;
use Illuminate\Database\Eloquent\Model;
use Jetcod\LaravelRepository\Eloquent\BaseRepository

class UserService
{
    protected $repository;

    protected function __construct(UserRepository $repository)
    {
        $this->repository = $repository;
    }

    public function getAdmins()
    {
        return $this->repository->findBy([
            ['role', '=', 'ADMIN']
        ]);
    }
}

API

BaseRepository 类中提供了以下方法

  • find(int $id): 通过 ID 查找模型。
  • findAll(): 获取所有模型。
  • findBy(array $conditions, array $relations = [], bool $paginate = true, int $pageSize = 10): 通过条件查找所有模型及其标识的关系。结果可以是分页的,也可以作为集合返回。
  • findOneBy(array $conditions, array $relations = []): 通过条件查找模型及其标识的关系。
  • with($relations, $callback = null): 设置应预加载的关系。
  • countBy(array $conditions): 通过条件计数模型。
  • delete($model): 删除模型
  • insert(array $rows): 批量插入数据
  • create(array $attributes): 创建新的模型。
  • updateOrCreate(array $data, array $conditions): 创建或更新匹配属性记录,并用值填充
  • update(Model $model, array $data, array $fillable = []): 更新现有模型。
  • fill(Model $model, array $data, array $fillable = []): 通过给定的数据数组填充给定的模型。
  • delete($model): 删除模型。
  • destroy($ids): 销毁一个 id 数组或集合。
  • query(): 查询构建器实例。

您还可以扩展 BaseRepository 类以添加针对特定用例的自定义方法。

贡献

如果您发现任何错误或对新功能有想法,请请在 GitHub 上打开一个问题或提交一个 pull 请求。

许可证

我的 Eloquent 仓库库是开源软件,根据 MIT 许可证授权。