- Back-end
- Clean Architecture
- Code coverage
- CRUD
- Dependency Injection
- Design Patterns
- Docker Compose
- DTO
- Enums
- Feature tests
- Interfaces
- Laravel 9
- Linux
- Makefile
- Mocking Objects
- MySQL 8
- Nginx
- PHP 8.2
- PHPUnit
- PostgreSQL 16
- Presenters
- Repository Pattern (with criteria queries)
- RESTful API
- SOLID
- SQL
- Unit tests
- Use Cases
- Xdebug
- Clone this repository:
git clone git@github.com:d-alejandro/laravel-code-examples.git - Go to 'laravel-code-examples' directory:
cd laravel-code-examples - Create a new .env file:
cp .env.example .env - Run following commands:
docker-compose build --no-cachedocker-compose up -ddocker-compose exec php-fpm composer installdocker-compose exec php-fpm php artisan key:generatedocker-compose exec php-fpm php artisan migratedocker-compose exec php-fpm php artisan db:seed
To run the unit tests:
docker-compose exec php-fpm php artisan test --testsuite=Unit To run the feature tests:
docker-compose exec php-fpm php artisan test --testsuite=Feature To run the test coverage:
docker-compose exec php-fpm php artisan test --coverage docker-compose exec php-fpm ./vendor/bin/phpunit --coverage-html ./storage/reports/coverage - Request URL:
http://localhost:8081/api/orders?start=0&end=2&sort_column=id&sort_type=asc - Method:
GET - Path:
/orders - Headers:
Accept:application/json, Content-Type:application/json - Parameters:
start, end, sort_column, sort_type - Status Code:
200 - Response:
{ "data": [ { "id": 10000001, "agency_name": "МКК ТверьВектор", "status": "prepayment", "is_confirmed": true, "is_checked": true, "rental_date": "21-12-2023", "user_name": "Марат Романович Яковлев", "transport_count": 3, "guest_count": 3, "admin_note": "Ну, душа, вот это так!" }, { "id": 10000002, "agency_name": "ЗАО КазТехРечЛизинг", "status": "waiting", "is_confirmed": true, "is_checked": true, "rental_date": "27-12-2023", "user_name": "Сергеева Эльвира Андреевна", "transport_count": 3, "guest_count": 3, "admin_note": null } ] }- Request URL:
http://localhost:8081/api/orders - Method:
POST - Path:
/orders - Headers:
Accept:application/json, Content-Type:application/json - Parameters:
agency_name, rental_date, guest_count, transport_count, user_name, email, phone - Status Code:
201 - Response:
{ "data": { "id": 10000011, "agency_name": "Test Agency Name", "status": "waiting", "is_confirmed": false, "is_checked": false, "rental_date": "22-12-2023", "user_name": "Test User Name", "transport_count": 1, "guest_count": 1, "admin_note": null, "note": null, "email": "test@test.ru", "phone": "71437854547", "confirmed_at": null, "created_at": "21-12-2023 12:22:33", "updated_at": "21-12-2023 12:22:33" } }- Request URL:
http://localhost:8081/api/orders/10000011 - Method:
GET - Path:
/orders/{id} - Headers:
Accept:application/json, Content-Type:application/json - Status Code:
200 - Response:
{ "data": { "id": 10000011, "agency_name": "Test Agency Name", "status": "waiting", "is_confirmed": false, "is_checked": false, "rental_date": "22-12-2023", "user_name": "Test User Name", "transport_count": 1, "guest_count": 1, "admin_note": null, "note": null, "email": "test@test.ru", "phone": "71437854547", "confirmed_at": null, "created_at": "21-12-2023 12:22:33", "updated_at": "21-12-2023 12:22:33" } }- Request URL:
http://localhost:8081/api/orders/10000011 - Method:
PUT - Path:
/orders/{id} - Headers:
Accept:application/json, Content-Type:application/json - Parameters:
guest_count, transport_count, user_name, email, phone - Status Code:
200 - Response:
{ "data": { "id": 10000011, "agency_name": "Test Agency Name", "status": "waiting", "is_confirmed": false, "is_checked": false, "rental_date": "22-12-2023", "user_name": "Test User Name", "transport_count": 1, "guest_count": 1, "admin_note": null, "note": null, "email": "test@test.ru", "phone": "70000000001", "confirmed_at": null, "created_at": "21-12-2023 12:22:33", "updated_at": "21-12-2023 15:03:33" } }- Request URL:
http://localhost:8081/api/orders/10000011 - Method:
DELETE - Path:
/orders/{id} - Headers:
Accept:application/json, Content-Type:application/json - Status Code:
200 - Response:
{ "data": { "id": 10000011, "agency_name": "Test Agency Name", "status": "waiting", "is_confirmed": false, "is_checked": false, "rental_date": "22-12-2023", "user_name": "Test User Name", "transport_count": 1, "guest_count": 1, "admin_note": null, "note": null, "email": "test@test.ru", "phone": "70000000001", "confirmed_at": null, "created_at": "21-12-2023 12:22:33", "updated_at": "21-12-2023 15:13:30" } }