Laravel5.5 API 资源 如何做 dingo API 的 Transformer ?

laravel5.5 API资源 如何做dingo API的 Transformer
类似Transformer 这种可以对返回的数据字段单个处理并且引用Model 中的方法
文档里面的这种

public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
'posts' => Post::collection($this->whenLoaded('posts')),
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
];
}
好像不可以引用数据集
而对数据集的操作 文档只有
public function toArray($request)
{
return [
'data' => $this->collection,
'links' => [
'self' => 'link-value',
],
];
}

但我是想对数据集中单个字段进行控制,并且可以随意添加删除返回的字段 ,不完全依赖数据库所返回的数据
对指定字段值加密,指定字段从缓存中获取数据 等等操作。

所以这个问题 ,有大牛可以解答一下吗?

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5
Epona

https://laracasts.com/series/whats-new-in-...

看看这个说不定能帮到你

6年前 评论

@Epona tnanks, 已完美解决。

6年前 评论

@Epona 好像并没有看到处理collection单独字段

5年前 评论

@Epona
@darkcoffee
两位大大,能不能大概讲下怎么做?

5年前 评论

吐槽一下,官方的文档确实写得不太好。API 资源针对单个模型或者多个模型的集合,分两步来做:
1、php artisan make:resource User // 先创建针对单个模型的 transformer,这时跟着文档来操作,是没有问题的,接下来是针对多个模型集合;
2、php artisan make:resource UserCollection // 这时候 Resources 目录中应该有 User 和 UserCollection 两个文件。UserCollection 也跟着文档来操作,集合也是没问题的,但是你一定发现了,集合中显示的数据字段和 User 单模型中定义的数据格式是一致的。
对,就是这么简单,没有第三步了。

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!