laravel Transformers中修改data键

1、安装包

github.com/spatie/lara…

2、创建新的ArraySerializer

use League\Fractal\Serializer\ArraySerializer;

class HotelArraySerializer extends ArraySerializer
{
    /**
     * Serialize a collection.
     *
     * @param string $resourceKey
     * @param array  $data
     *
     * @return array
     */
    public function collection($resourceKey, array $data)
    {
        return ['hotels' => $data];
    }

    /**
     * Serialize an item.
     *
     * @param string $resourceKey
     * @param array  $data
     *
     * @return array
     */
    public function item($resourceKey, array $data)
    {
        return ['hotels' => $data];
    }

    /**
     * Serialize null resource.
     *
     * @return array
     */
    public function null()
    {
        return ['hotels' => []];
    }
}
复制代码

3、应用

    /**
     * 酒店基础信息接口
     * @param Request $request
     * @return string
     */
    public function getFullHotelInfo(Request $request)
    {
        $skip       = $request->get("param.skip", 3);
        $limit      = $request->get("param.limit", 10);
        $paginator  = Hotel::query()->paginate($limit, ['*'], 'skip', $skip);
        $datas      = fractal($paginator->getCollection(), HotelTransformer::class, HotelArraySerializer::class);
        return $this->service->encrypt_openssl($this->json($datas), 'AES-128-ECB', $this->key);
    }
复制代码

4、其他

如果直接使用League包也是一样的,将自己的Serializers引入即可


use Acme\Transformer\BookTransformer;
use League\Fractal;

$resource = new Fractal\Resource\Item($book, new BookTransformer);
$resource = new Fractal\Resource\Collection($books, new BookTransformer);

复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值