/** * Merges the contents of this response with ``$response`` and returns a new * :php:class:`Response` instance. * * @param Response $response * * @return Response * * @throws IncompatibleResponseException */ public function merge(Response $response) { $meta = $response->getRaw('meta'); $data = $response->get(); $pagination = $response->hasPages() ? $response->getRaw('pagination') : []; $old = $this->get(); if ($this->isCollection($old) && $this->isCollection($data)) { $old = !$old instanceof Collection ?: $old->toArray(); $new = !$data instanceof Collection ?: $data->toArray(); return new Response($meta, array_merge($old, $new), $pagination); } if ($this->isRecord($old) && $this->isRecord($data)) { return new Response($meta, [$old, $data], $pagination); } throw new IncompatibleResponseException('The response contents cannot be merged'); }