从laravel分形中删除数据

时间:2017-11-25 10:07:19

标签: laravel laravel-5.5

我使用laravel-fractal来转换我的数据,这是一个回复

如何删除数据; 我做了一个搜索,我意识到我需要使用一个Serializer; 但我只想删除所有包含(关系)的数据

{
    "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": []
            }
        }
    ]

2 个答案:

答案 0 :(得分:1)

我在GitHub上找到了答案。从thephpleague/fractal on GitHub复制了以下答案:


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

SELECT s.Sku, s.SkuId, sc.Qty
FROM SkuCombo sc
    INNER JOIN Skus s ON sc.SkuComboId = s.SkuId

向经理注册您的序列化器

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;
    }
}

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

$manager = new Manager();

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

答案 1 :(得分:0)

使用数组序列化器:

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