um-flint/laravel-repository
Composer 安装命令:
composer require um-flint/laravel-repository
包简介
A repository pattern for Laravel.
README 文档
README
Methods
UMFlint\Repository\Contracts\RepositoryInterface
- lists($column, $key = null)
- pluck($column, $key = null)
- sync($id, $relation, $attributes, $detaching = true)
- syncWithoutDetaching($id, $relation, $attributes)
- all($columns = ['*'])
- paginate($limit = null, $columns = ['*'])
- simplePaginate($limit = null, $columns = ['*'])
- find($id, $columns = ['*'])
- findByField($field, $value, $columns = ['*'])
- findWhere(array $where, $columns = ['*'])
- findWhereIn($field, array $values, $columns = ['*'])
- findWhereNotIn($field, array $values, $columns = ['*'])
- create(array $attributes)
- update(array $attributes, $id)
- delete($id)
- orderBy($column, $direction = 'asc')
- has($relation)
- with($relations)
- whereHas($relation, $closure)
- withCount($relations)
- hidden(array $fields)
- visible(array $fields)
- scopeQuery(\Closure $scope)
- resetScope()
Traits
UMFlint\Traits\SoftDeletes
This trait allows for soft deletes:
- delete($id, $force = false)
In order to query for deleted entities:
- withTrashed()
To restore a soft deleted entity:
- restore($id)
Hooks
Boot
Anything that needs to happen when the repository class is created. Uses Laravels container for automatic injection.
- boot()
Create
- beforeCreate(&$attributes)
- afterCreate($model, &$attributes)
Update
- beforeUpdate($model, &$attributes)
- afterUpdate($model, &$attributes)
Delete
- beforeDelete($model)
- afterDelete($model, $deleted)
Restore
- beforeRestore($model)
- afterRestore($model)
Validation
Example rules:
<?php namespace App\Rules; use App\Models\Announcement; use Illuminate\Validation\Rule; use UMFlint\Repository\Rules\BaseRules; class AnnouncementRules extends BaseRules { protected function rules(): array { return [ 'type' => ['required', Rule::in(array_keys(Announcement::$types))], 'title' => 'required', 'message' => 'required', 'start_at' => ['required', 'date'], 'end_at' => ['required', 'date'], ]; } }
To use it in a repository:
<?php namespace App\Repositories; use App\Models\Announcement; use App\Rules\AnnouncementRules; use UMFlint\Repository\BaseRepository; class AnnouncementRepository extends BaseRepository { public function model(): string { return Announcement::class; } public function rules(): array { return AnnouncementRules::getRules(); } }
um-flint/laravel-repository 适用场景与选型建议
um-flint/laravel-repository 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2.05k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2017 年 10 月 03 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 um-flint/laravel-repository 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 um-flint/laravel-repository 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 2.05k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 21
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-10-03