Skip to content

Latest commit

 

History

History
81 lines (56 loc) · 1.65 KB

README.md

File metadata and controls

81 lines (56 loc) · 1.65 KB

#Laravel array formatter similarity DTO#

Introduction

Laravel can serialize EloquentModel or EloquentCollection to array, but it can't get only certain data (for example: return JSON from controller). DTO can return to response only certain data large nested.

Installation

Require this package in your composer.json and update composer. This will download the package.

"valeryq/dto": "1.0.0"

After updating composer, add the ServiceProvider to the providers array in app/config/app.php

'Valeryq\DTO\DTOServiceProvider',

You can use the facade for shorter code. Add this to your aliases:

'DTO' => 'Valeryq\DTO\DTOFacade',

How it use

Eloquent model example:

class UserController extends \BaseController 
{
    public function getUser() 
    {
        $user = UserModel::find(1);

        return DTO::make($user)->only(['id', 'firstname']);

        or
     
        return DTO::make($user)->except(['lastname']);
    }   
}

Eloquent collection example:

class UserController extends \BaseController 
{
    public function getUser() 
    {
        $user = UserModel::where('firstname', 'Test')->get();

        return DTO::make($user)->only(['id', 'firstname']);

        or
     
        return DTO::make($user)->except(['lastname']);
    }   
}

Nested objects:

class UserController extends \BaseController 
{
    public function getUser() 
    {
        $user = UserModel::with('posts')->find(1);

        return DTO::make($user)->only(['id', 'firstname', 'posts.id', 'posts.body']);

        or
     
        return DTO::make($user)->except(['lastname', 'posts.body']);
    }   
}