valeryq/dto
#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']);
}
}
Related Packages
Powerful PHP database abstraction layer (DBAL) with many features for database s...
Laravel Serializable Closure provides an easy and secure way to serialize closur...
Cli error handling for console/command-line PHP applications.