Skip to content

valeryq/dto

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 

Repository files navigation

#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']);
    }   
}

About

Laravel array formatter similarity DTO

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages