antriver/laravel-repositories

10.0.1 2024-05-03 13:55 UTC

README

这里提供的类允许您使用仓库模式对 Laravel 模型进行 CRUD 操作。

安装

composer require antriver/laravel-repositories

基本用法

创建一个扩展 AbstractRepository 的类。

<?php

namespace App\Repositories;

use Antriver\LaravelRepositories\Base\AbstractRepository;
use App\Models\Post;

class PostRepository extends AbstractRepository
{
    public function getModelClass(): string
    {
        return Post::class;
    }
}

现在您拥有了一个 Post 模型的仓库,具有以下方法

find(int $modelId)

通过其主键返回单个模型,或返回 null。

findOrFail(int $modelId)

通过其主键返回单个模型,或抛出 ModelNotFoundException

findMany(array $modelIds)

返回多个模型的集合。结果将仅包含找到的模型。

findOneBy(string $field, $value)

返回匹配 fieldvalue 的单个模型,或返回 null。

findOneByOrFail(string $field, $value)

返回匹配 fieldvalue 的单个模型,或抛出 ModelNotFoundException

persist(Model $model)

将给定的模型保存到数据库。

remove(Model $model)

从数据库中删除给定的模型。

incremenet(Model $model, $column, $amount)

将指定列的值增加指定的数量。

(即 UPDATE table SET column = column + 1);

decrement(Model $model, $column, $amount)

将指定列的值减少指定的数量。

(即 UPDATE table SET column = column - 1);

缓存仓库

如果您扩展 AbstractCachedRepository 而不是 AbstractRepository,则将拥有所有相同的功能,但是以下操作将首先在缓存中查找模型。

  • find - 通过其主键缓存模型。

  • findOrFail - 通过其主键缓存模型。

  • findMany - 使用与 find 相同的缓存键来定位每个模型。

  • findOneBy - 缓存找到的匹配值模型的 primary key。未来的调用将查找匹配的 ID 并然后调用 find

  • findOneByOrFail - 缓存找到的匹配值模型的 primary key。未来的调用将查找匹配的 ID 并然后调用 find

  • persist - 这还将模型存储在缓存中,在它被保存到数据库后。

  • remove - 这还将模型从缓存中删除,在它被保存到数据库后。

缓存仓库还有以下附加方法

forgetById(int $modelId)

忘记模型的缓存副本(不会从数据库中删除)。

forgetByModel(Model $model)

忘记模型的缓存副本(不会从数据库中删除)。

refreshById(int $modelId)

使用在数据库中找到的最新版本更新模型的缓存副本。

软删除仓库

如果您的模型支持软删除(Illuminate\Database\Eloquent\SoftDeletes 特性),则上述 find 等方法将排除软删除模型从结果中。

如果您扩展 AbstractSoftDeletableRepository 而不是 AbstractRepository,您将获得以下附加方法

findWithTrashed(int $modelId)

findWithTrashedOrFail(int $modelId)

即使模型已被软删除,也通过主键返回单个模型。

findTrashed(int $modelId)

findTrashedOrFail(int $modelId)

仅当模型已被软删除时,通过主键返回模型。

findOneByWithTrashed(string $field $value)

findOneByWithTrashedOrFail(string $field, $value)

返回单个模型,即使该模型已软删除,只要 field 字段匹配 value

findTrashedOneBy(string $field, $value)

findTrashedOneByOrFail(string $field, $value)

返回单个模型,只有当模型被软删除且 field 字段匹配 value 时。

可缓存软删除仓库

这结合了 AbstractCachedRepositoryAbstractSoftDeletableRepository 的功能。

使用此功能时,模型的缓存将包括软删除的模型。这适用于主键缓存和字段/值缓存。在仓库内部进行筛选,如果请求的是已删除或未删除的模型,则返回 null 或抛出异常。