PHP code example of rizkussef / laravel-crud-api
1. Go to this page and download the library: Download rizkussef/laravel-crud-api library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
rizkussef / laravel-crud-api example snippets
config/app.php
Rizkussef\LaravelCrudApi\ApiCrudServiceProvider::class,
config/api-crud.php
return [
'paginate' => 15,
];
Route::apiResource('articles', ArticleController::class);
namespace App\Services;
use Rizkussef\LaravelCrudApi\Services\ApiCrudService;
class UserService extends ApiCrudService
{
// Add custom business logic here if needed
}
namespace App\Http\Controllers;
use App\Services\UserService;
use Rizkussef\LaravelCrudApi\Http\Controllers\ApiCrudController;
class UserController extends ApiCrudController {
public function __construct(UserService $service)
{
parent::__construct($service);
}
}
// Equal / Greater Than / Less Than
['age' => ['operator' => '=', 'value' => 25]]
['age' => ['operator' => '>', 'value' => 18]]
['age' => ['operator' => '>=', 'value' => 18]]
['age' => ['operator' => '<', 'value' => 65]]
['age' => ['operator' => '<=', 'value' => 65]]
['status' => ['operator' => '!=', 'value' => 'deleted']]
// LIKE search (wildcard)
['name' => ['operator' => 'like', 'value' => 'John']]
// Starts with
['email' => ['operator' => 'starts_with', 'value' => 'admin']]
// Ends with
['email' => ['operator' => 'ends_with', 'value' => '.com']]
// Simple value (auto LIKE for strings)
['name' => 'John'] // Searches LIKE "%John%"
// Multiple values
['status' => ['operator' => 'in', 'value' => ['active', 'pending']]]
// Exclude values
['status' => ['operator' => 'not_in', 'value' => ['deleted', 'banned']]]
// Range
['price' => ['operator' => 'between', 'value' => [100, 500]]]
['price' => ['operator' => 'not_between', 'value' => [100, 500]]]
['deleted_at' => ['operator' => 'null']] // IS NULL
['verified_at' => ['operator' => '!null']] // IS NOT NULL
['verified_at' => ['operator' => 'not_null']]
['published_at' => ['operator' => 'exists', 'value' => true]] // IS NOT NULL
['published_at' => ['operator' => 'exists', 'value' => false]] // IS NULL
['created_at' => ['operator' => 'date', 'value' => '2024-02-23']]
['created_at' => ['operator' => 'year', 'value' => 2024]]
['created_at' => ['operator' => 'month', 'value' => 2]]
['created_at' => ['operator' => 'day', 'value' => 23]]
namespace App\Services;
use App\Services\UserService;
class ReportService
{
public function __construct(private UserService $userService) {}
/**
* Generate active users report
*/
public function getActiveUsersReport()
{
$filters = [
'status' => 'active',
'created_at' => [
'operator' => 'date',
'value' => now()->subMonth()->format('Y-m-d')
]
];
$relationships = ['profile', 'department'];
return $this->userService->index($filters, $relationships);
}
/**
* Get premium users with pagination
*/
public function getPremiumUsers($page = 1)
{
$filters = [
'subscription_type' => 'premium',
'last_payment_date' => [
'operator' => '!=null'
]
];
$relationships = ['subscription', 'profile'];
return $this->userService->getPaginated(
perPage: 50,
filters: $filters,
relationships: $relationships
);
}
/**
* Search users by multiple criteria
*/
public function searchUsers($name, $department, $minAge)
{
$filters = [
'name' => $name,
'department_id' => $department,
'age' => [
'operator' => '>=',
'value' => $minAge
]
];
return $this->userService->index($filters, ['profile', 'department']);
}
}
return new UserResource($user);
return UserResource::collection($users);
// No UserResource exists
return $user; // returns full user model data
namespace App\Services;
use Rizkussef\LaravelCrudApi\Services\ApiCrudService;
class UserService extends ApiCrudService
{
/**
* Activate user
*/
public function activate($id)
{
$user = $this->model->findOrFail($id);
$user->update(['active' => true]);
return $this->applyResource($user);
}
/**
* Get active users in a department
*/
public function getActiveDepartmentUsers($departmentId, $perPage = 15)
{
$filters = [
'active' => true,
'department_id' => $departmentId
];
$relationships = ['department', 'profile'];
return $this->getPaginated($perPage, $filters, $relationships);
}
}
namespace App\Services;
use Rizkussef\LaravelCrudApi\Services\ApiCrudService;
class OrderService extends ApiCrudService
{
/**
* Get high-value orders in date range with customer details
*/
public function getHighValueOrders($minAmount, $startDate, $endDate, $perPage = 20)
{
$filters = [
'total_amount' => [
'operator' => '>=',
'value' => $minAmount
],
'created_at' => [
'operator' => 'between',
'value' => [$startDate, $endDate]
],
'status' => [
'operator' => 'in',
'value' => ['completed', 'shipped']
]
];
$relationships = ['customer', 'items.product', 'payment'];
return $this->getPaginated($perPage, $filters, $relationships);
}
/**
* Search orders by customer name and status
*/
public function searchOrders($customerName, $statuses)
{
$filters = [
'customer_name' => [
'operator' => 'like',
'value' => $customerName
],
'status' => [
'operator' => 'in',
'value' => $statuses
]
];
return $this->index($filters, ['customer', 'items']);
}
}
namespace App\Services;
use Rizkussef\LaravelCrudApi\Services\ApiCrudService;
class ArticleService extends ApiCrudService
{
/**
* Get published articles with authors and comments
*/
public function getPublishedArticles($perPage = 15)
{
$filters = [
'status' => 'published',
'published_at' => [
'operator' => '!null' // IS NOT NULL
]
];
$relationships = ['author', 'comments.author', 'tags'];
return $this->getPaginated($perPage, $filters, $relationships);
}
/**
* Get articles pending review (no reviewer assigned)
*/
public function getPendingReview()
{
$filters = [
'status' => 'draft',
'reviewer_id' => [
'operator' => 'null' // IS NULL
]
];
return $this->index($filters, ['author']);
}
}
Route::apiResource('users', UserController::class);
bash
php artisan vendor:publish --provider="Rizkussef\LaravelCrudApi\ApiCrudServiceProvider" --tag=config
App
├── Models
│ └── User.php
├── Services
│ └── UserService.php
├── Http
│ ├── Controllers
│ │ └── UserController.php
│ ├── Requests
│ │ ├── UserRequest.php
│ │ └── UserUpdateRequest.php
│ └── Resources
│ └── UserResource.php
bash
php artisan api-crud:make {Model}
bash
php artisan api-crud:make Article