承接 pektiyaz/laravel-repository 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

pektiyaz/laravel-repository

最新稳定版本:v1.0.1

Composer 安装命令:

composer require pektiyaz/laravel-repository

包简介

Repository implement for Laravel Framework

README 文档

README

A clean, extendable, and event-driven repository pattern implementation for Laravel applications. Easily separate your business logic from the persistence layer using a simple and powerful abstraction.

Built with ❤️ by Pektiyaz

✨ Features

  • 🧩 Abstract base repository with out-of-the-box CRUD operations
  • 🔁 Event-driven architecture (created, updated, deleted, restored, etc.)
  • ♻️ Soft delete & restore support
  • 🔎 Powerful filtering with custom QueryFilterContract
  • 🗃️ Entity abstraction with transformation helpers (toArray, toJson, etc.)
  • 📦 Bulk operations (create, update, delete)
  • 📖 Pagination and advanced query support via callbacks

📦 Installation

composer require pektiyaz/laravel-repository

🧰 Usage

  1. Extend the AbstractRepository
use Pektiyaz\LaravelRepository\AbstractRepository;
/**
 * @method PostEntity findById(int|string $id)
 * @method PostEntity findOneBy(array $conditions)
 * @method PostEntity[] findAllBy(array $conditions)
 * @method PostEntity[] findAll()
 * @method PostEntity create(array $data)
 * @method PostEntity restore(int $id)
 * @method PostEntity[] paginate(int $page, int $perPage, array $conditions = [])
 * @method PostEntity[] findTrashed()
 * @method PostEntity findTrashedById(int|string $id)
 * @method PostEntity[] findByCallback(callable $callback)
 * @method PostEntity[] bulkCreate(array $records)
 * @method PostEntity[] filter(QueryFilterContract $filter)
 */
class PostRepository extends AbstractRepository
{
    public function getModel(): string
    {
        return \App\Models\Post::class;
    }

    public function getEntity(): string
    {
        return \App\Entities\PostEntity::class;
    }

    public function getEventPrefix(): string
    {
        return 'post';
    }
}
  1. Create Your Entity
use Pektiyaz\LaravelRepository\AbstractEntity;

class PostEntity extends AbstractEntity
{
    protected ?string $title = null;

    public function getTitle(): ?string
    {
        return $this->title;
    }

    public function setTitle(?string $title): void
    {
        $this->title = $title;
    }

    // Add other fields as needed...
}

🧠 Concepts

📂 AbstractRepository

The AbstractRepository provides a fully-featured base to handle:

  • findById, findOneBy, findAllBy, findAll
  • create, update, delete
  • restore, forceDelete
  • bulkCreate, bulkUpdate, bulkDelete
  • paginate, exists, count
  • filter, updateByFilter, deleteByFilter, countByFilter

Event dispatching with customizable prefixes

🧱 AbstractEntity

The AbstractEntity provides a structured way to transform data between model and entity:

  • toArray(), toJson() → Serialize entity
  • fromArrayData(array $data) → Hydrate entity
  • fromEntity(object $item) → Populate from another entity
  • fromJson(string $json) → Load from JSON

📋 Example Event Dispatching

If your repository uses an event prefix post, the following events will be dispatched automatically:

  • post.entity.created
  • post.entity.updated
  • post.entity.deleted
  • post.entity.restored
  • post.entity.permanently_deleted

Use Laravel’s event listeners to handle these events for logging, syncing, notifications, etc.

🔧 Contracts Required

This package relies on a few contracts to ensure consistency:

  1. RepositoryContract
  2. EntityContract
  3. QueryFilterContract

These can be published or extended as needed for your application structure.

统计信息

  • 总下载量: 168
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-04-07