1、安装包
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);
复制代码