【问题标题】:remove data from laravel fractal从 laravel 分形中删除数据
【发布时间】:2018-11-03 04:20:05
【问题描述】:

我正在使用 laravel-fractal 来转换我的数据,这是一个响应

如何删除数据; 我进行了搜索,我意识到我需要使用序列化器; 但我只想删除所有包含(关系)的数据

{
    "data": [
        {
            "id": 1,
            "name": "test name",
            "status": null,
            "tags": [
                "first",
                "second"
            ],
            "created_at": "1396/9/3",
            "contacts": {
                "data": [
                    {
                        "value": "test@test.com",
                        "type": "email",
                        "icon": "fa fa-email"
                    }
                ]
            }
        },
        {
            "id": 2,
            "name": "name test 2",
            "status": null,
            "tags": [],
            "created_at": "1396/9/3",
            "contact": {
                "data": []
            }
        }
    ]

【问题讨论】:

  • 我相信您正在尝试做一个 API,在这种情况下,您确实需要使用 data 作为响应的约定!
  • 问题是为什么你需要删除data?您没有计划进行分页吗?您应该对数据进行分页,然后您需要data 资源键。
  • 我没有嵌套关系的分页。

标签: laravel laravel-5.5


【解决方案1】:

我在 GitHub 上找到了答案。以下答案抄自thephpleague/fractal on GitHub


您可以为此编写自己的序列化程序。

class YourDataSerializer extends ArraySerializer
{
    public function collection($resourceKey, array $data)
    {
        if ($resourceKey) {
            return [$resourceKey => $data];
        }

        return $data;
    }

    public function item($resourceKey, array $data)
    {
        if ($resourceKey) {
            return [$resourceKey => $data];
        }
        return $data;
    }
}

向经理注册您的序列化程序

$manager = new Manager();

$manager->setSerializer(new YourDataSerializer());

当您想要获取数据或其他任何内容时,您可以将 resourceKey 作为第三个参数传递给您的 Item 或 Collection。

$resource = new Collection($folders, new AccountFolderTransformer(), 'data');

【讨论】:

  • 谢谢!我正在寻找总是返回额外“数据”参数的东西。
【解决方案2】:

使用数组序列化器:

Fractal::create()
        ->item($item, new MyTransformer())
        ->serializeWith(new ArraySerializer())

【讨论】:

    猜你喜欢
    • 2020-01-06
    • 2016-10-21
    • 2019-04-01
    • 1970-01-01
    • 2017-11-29
    • 2021-06-08
    • 2015-07-15
    • 2019-06-08
    • 2016-06-05
    相关资源
    最近更新 更多