jetcod / eloquent-repository
此包是 Laravel 中仓库模式的实现。
1.4.0
2024-01-28 16:29 UTC
Requires
- php: ^7.4|^8.0
- illuminate/console: ^8.0|^9.0|^10.0
- illuminate/database: ^8.0|^9.0|^10.0
- illuminate/support: ^8.0|^9.0|^10.0
- nesbot/carbon: ^2.65
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.13
- mockery/mockery: ^1.5
- phpstan/phpstan: ^1.9
- phpunit/phpunit: ^9.6
README
需求
- 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 许可证授权。