valeryq/dto

该包最新版本(1.0.0)没有可用的许可证信息。

Laravel 数组格式化相似数据传输对象(DTO)

1.0.0 2015-01-15 07:55 UTC

This package is not auto-updated.

Last update: 2024-09-28 17:12:29 UTC


README

#Laravel 数组格式化相似数据传输对象(DTO)#

简介

Laravel 可以将 EloquentModel 或 EloquentCollection 序列化为数组,但不能仅获取某些数据(例如:从控制器返回 JSON)。DTO 可以返回响应中的某些大型嵌套数据。

安装

composer.json 中添加此包并更新 composer。这将下载该包。

"valeryq/dto": "1.0.0"

更新 composer 后,将 ServiceProvider 添加到 app/config/app.php 中的 providers 数组

'Valeryq\DTO\DTOServiceProvider',

您可以使用外观(facade)以缩短代码。将以下内容添加到您的别名中

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

如何使用

Eloquent 模型示例

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 集合示例

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

嵌套对象

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