valeryq / dto
该包最新版本(1.0.0)没有可用的许可证信息。
Laravel 数组格式化相似数据传输对象(DTO)
1.0.0
2015-01-15 07:55 UTC
Requires
- php: >=5.4.0
- illuminate/support: 4.2.*
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']); } }