laravel-api-generator maintained by uzinfo
Description
Laravel API generator package for creating models, migrations, controllers, services, repositories, resources and requests with advanced field definitions
Author
Last update
2025/07/03 12:43
(dev-main)
License
Downloads
5
Laravel API Generator
Laravel API Generator - bu Laravel loyihalar uchun API komponentlarini tez va oson yaratish uchun mo'ljallangan package.
🚀 Xususiyatlar
- Models - Eloquent modellari yaratish (SoftDeletes bilan)
- Migrations - Ma'lumotlar bazasi migratsiyalari (field definition bilan)
- Controllers - API kontrollerlari yaratish
- Services - Biznes logika servislari
- Repositories - Ma'lumotlar bazasi bilan ishlash layerlari
- Resources - API resurslari (bitta va collection)
- Requests - Form validatsiya klasslari
- Traits - ApiResponse va ApiRequest traitlari
- BREAD - To'liq CRUD operatsiyalari bir buyruq bilan
📦 O'rnatish
Composer orqali package'ni o'rnating:
composer require uzinfo/laravel-api-generator
Stub fayllarni publish qiling:
php artisan vendor:publish --tag=api-generator-stubs
🛠️ Foydalanish
Ayrim komponentlar yaratish
# Model yaratish
php artisan make:model-api User
# Model va migration birga yaratish
php artisan make:model-api User --migration
# Migration yaratish
php artisan make:migration-api create_users_table
# Controller yaratish
php artisan make:controller-api UserController
# Service yaratish
php artisan make:service-api UserService
# Repository yaratish
php artisan make:repository-api UserRepository
# Resource yaratish
php artisan make:resource-api UserResource
# Resource Collection yaratish
php artisan make:resource-list-api UserResourceList
# Request yaratish
php artisan make:request-api StoreUserRequest
To'liq CRUD yaratish
# Barcha kerakli fayllarni bir buyruq bilan yaratish
php artisan make:bread User
Bu buyruq quyidagi fayllarni yaratadi:
app/Models/User.phpdatabase/migrations/****_create_users_table.phpapp/Http/Controllers/UserController.phpapp/Services/UserService.phpapp/Repositories/UserRepository.phpapp/Http/Resources/User/UserResource.phpapp/Http/Resources/User/UserResourceList.phpapp/Http/Requests/User/StoreUserRequest.phpapp/Http/Requests/User/UpdateUserRequest.php
📁 Yaratilgan fayllar strukturasi
app/
├── Models/
│ └── User.php
├── Http/
│ ├── Controllers/
│ │ └── UserController.php
│ ├── Requests/
│ │ └── User/
│ │ ├── StoreUserRequest.php
│ │ └── UpdateUserRequest.php
│ └── Resources/
│ └── User/
│ ├── UserResource.php
│ └── UserResourceList.php
├── Repositories/
│ └── UserRepository.php
├── Services/
│ └── UserService.php
database/
└── migrations/
└── 2024_07_03_120000_create_users_table.php
🎯 Traitlar
Package quyidagi traitlarni taqdim etadi:
ApiResponse Trait
use UzInfo\LaravelApiGenerator\Traits\ApiResponse;
class UserController extends Controller
{
use ApiResponse;
public function index()
{
return $this->replySuccess('Users retrieved successfully', $users);
}
}
Mavjud metodlar:
replySuccess($message, $data, $status)- Muvaffaqiyatli javobreplyFailure($message, $data, $status)- Xato javobreplyPaginatedData($data, $paginator)- Pagination bilan javobreplyUnpaginatedData($data)- Oddiy array javobreplyWithMeta($message, $data, $meta, $status)- Meta ma'lumotlar bilanreplyRaw($response, $status)- Raw response
ApiRequest Trait
use UzInfo\LaravelApiGenerator\Traits\ApiRequest;
class StoreUserRequest extends FormRequest
{
use ApiRequest;
protected $route_parameter = 'user';
protected $route_params = ['company' => 'company_id'];
}
🔧 Konfiguratsiya
Stub fayllarni o'zgartirib, yaratilgan kodlarni loyihangizga moslashtira olasiz.
📝 Misol
User CRUD yaratish:
php artisan make:bread User
Yaratilgan controller:
<?php
namespace App\Http\Controllers;
use App\Http\Requests\User\StoreUserRequest;
use App\Http\Requests\User\UpdateUserRequest;
use App\Http\Resources\User\UserResource;
use App\Http\Resources\User\UserResourceList;
use App\Services\UserService;
use UzInfo\LaravelApiGenerator\Traits\ApiResponse;
class UserController extends Controller
{
use ApiResponse;
public function __construct(
protected UserService $service
) {}
public function index()
{
$items = $this->service->paginate();
return $this->replyPaginatedData(
UserResource::collection($items),
$items
);
}
public function store(StoreUserRequest $request)
{
$item = $this->service->create($request->validated());
return $this->replySuccess(
'User created successfully',
new UserResource($item)
);
}
public function show(string $id)
{
$item = $this->service->getById($id);
return $this->replySuccess(
'User retrieved successfully',
new UserResource($item)
);
}
public function update(UpdateUserRequest $request, string $id)
{
$item = $this->service->update($id, $request->validated());
return $this->replySuccess(
'User updated successfully',
new UserResource($item)
);
}
public function destroy(string $id)
{
$this->service->delete($id);
return $this->replySuccess('User deleted successfully');
}
}
🤝 Hissa qo'shish
Loyihaga hissa qo'shish uchun:
- Repository'ni fork qiling
- Feature branch yarating (
git checkout -b feature/AmazingFeature) - O'zgartirishlarni commit qiling (
git commit -m 'Add some AmazingFeature') - Branch'ga push qiling (
git push origin feature/AmazingFeature) - Pull Request oching
📄 Litsenziya
Bu loyiha MIT litsenziyasi ostida chiqarilgan. Batafsil ma'lumot uchun LICENSE faylini ko'ring.
👥 Mualliflar
- UzInfo Team - dev@uzinfo.uz
🙏 Minnatdorchilik
Laravel jamoasiga ajoyib framework uchun rahmat!