定制 arafat69/laravel-repository 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

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

arafat69/laravel-repository

最新稳定版本:v2.1.0

Composer 安装命令:

composer require arafat69/laravel-repository

包简介

Laravel Repository Pattern package with built-in Artisan commands. Easily create repositories, follow clean architecture, and simplify database interactions.

README 文档

README

Packagist Stars GitHub issues Total Downloads Latest Stable Version License

Laravel Repository

A lightweight yet powerful Laravel repository pattern package with built-in Artisan commands to rapidly generate repositories. Designed to promote clean architecture, improve code maintainability, and simplify database interactions. Fully compatible with Laravel 7+.

Features

  • Generate repositories using Artisan commands
  • Supports model-specific repositories
  • Clean, maintainable code following repository pattern
  • Easy CRUD operations in repositories
  • Supports all Laravel versions from 7+
  • Optional stubs publishing for customization

Installation

composer require arafat69/laravel-repository

After installation, the package automatically creates the app/Repositories directory to organize your repository classes.

Generating a Repository

php artisan make:repository UserRepository

With a model: // use scope for specific model

php artisan make:repository UserRepository --model=User

Defining Functions in Repository

// Create a new record
public static function storeByRequest($request): User
{
    return self::create([
        'first_name' => $request->first_name,
        'last_name' => $request->last_name,
        'email' => $request->email,
        'phone' => $request->phone,
        //...
    ]);
}

// Update existing record
public static function updateByRequest($request, User $user): User
{
    $user->update([
        'first_name' => $request->first_name,
        'last_name' => $request->last_name,
        'email' => $request->email,
        'phone' => $request->phone,
        //...
    ]);

    return $user;
}

Repository Function Examples

namespace App\Repositories;

use App\Models\User;
use Illuminate\Http\Request;
use Arafat\LaravelRepository\Repository;

class UserRepository extends Repository
{
    /**
     * base method
     *
     * @method model()
    */
    public static function model()
    {
        return User::class;
    }

    /**
     * Create a new record from request
     */
    public static function storeByRequest(Request $request): User
    {
        return self::create([
            'first_name' => $request->first_name,
            'last_name'  => $request->last_name,
            'email'      => $request->email,
            'phone'      => $request->phone,
            // add other fields here
        ]);
    }

    /**
     * Update an existing record
     */
    public static function updateByRequest(Request $request, User $user): User
    {
        $user->update([
            'first_name' => $request->first_name,
            'last_name'  => $request->last_name,
            'email'      => $request->email,
            'phone'      => $request->phone,
            // add other fields here
        ]);

        return $user;
    }

    /**
     * Update the logged-in user's profile
     */
    public static function profileUpdate(Request $request): User
    {
        $user = auth()->user();
        $user->update($request->only(['first_name', 'last_name', 'email', 'phone']));
        return $user;
    }

    /**
     * Get order summary for a user
     */
    public static function orderSummary(User $user)
    {
        return $user->orders()
                    ->selectRaw('count(*) as total_orders, sum(total) as total_amount')
                    ->first();
    }

    /**
     * Get all active users
     */
    public static function getActiveUsers()
    {
        return self::query()->where('status', true)->get();
    }

    /**
     * Delete a user
     */
    public static function deleteUser(User $user): bool
    {
        return $user->delete();
    }
}

Using Repository in Controller

use App\Repositories\UserRepository;


// --- Custom repository methods ---

// Store user
UserRepository::storeByRequest($request);

// Update a user
$user = UserRepository::updateByRequest($request, $user);

// Update current logged-in user's profile
$currentUser = UserRepository::profileUpdate($request);

// Get order summary
$orderSummary = UserRepository::orderSummary($user);

// Get all active users
$activeUsers = UserRepository::getActiveUsers();

// Delete a user
UserRepository::deleteUser($user);

// --- Built-in repository methods (from the base repository) ---

// Get all users
$users = UserRepository::getAll();

// Query users with conditions
$users = UserRepository::query()->where('name','Jon')->get();

// Find a specific user by ID
$user = UserRepository::find($userID);

// Get the first record
$user = UserRepository::first();

// Delete a user by ID
UserRepository::delete($userID);

Publishing Stubs

php artisan vendor:publish --tag=stubs

Contribution

Feel free to open Pull Requests or submit issues. Contributions are welcome!

License

MIT

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-11-24