1

鉴于以下情况,我试图弄清楚如何解析嵌套转换器的包含:

我有一个控制器,它设置我的 ArraySerializer,解析 OrderTransformer 的包含,然后创建数据:

$data = (new Manager())
    ->setSerializer(new ArraySerializer())
    ->parseIncludes('dispatches')
    ->createData(new Collection($orders, new OrderTransformer()));

在我的订单转换器中,我有我从上面解析的包含调度:

class OrderTransformer
{
    protected $availableIncludes = [
        'dispatches',
    ];

    public function transform($order)
    {
        return [];
    }

    public function includeDispatches($order)
    {
        return $this->collection($order->getDispatches(), new DispatchesTransformer());
    }
}

但是,我遇到困难的地方是我的 DispatchesTransformer:

class DispatchesTransformer
{
    protected $avaiableIncludes = [
        'product',
    ];

    public function transform($order)
    {
        return [];
    }

    public function includeProduct()
    {
        // ...
    }
}

我有一个我想使用的可用包含产品。我不想让它成为默认包含。我如何使用该包含?

我已经从我的控制器尝试过这样的事情:

->parseIncludes(['dispatches', 'product'])

4

1 回答 1

0

这可以使用点符号来实现,如下所示:

dispatches.product

它实际上在包含数据的文档中,我忽略了一些东西:https ://fractal.thephpleague.com/transformers/

于 2020-01-30T13:46:55.117 回答