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
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
其他信息
- 授权协议: MIT
- 更新时间: 2023-11-24