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' => []];
}
}
複製代碼
/** * 酒店基礎信息接口 * @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);
}
複製代碼
若是直接使用League
包也是同樣的,將本身的Serializers
引入便可laravel
use Acme\Transformer\BookTransformer;
use League\Fractal;
$resource = new Fractal\Resource\Item($book, new BookTransformer);
$resource = new Fractal\Resource\Collection($books, new BookTransformer);
複製代碼