/** * @param $linkPrefix * @return JsonApi\resource * @throws \Exception */ protected function prepareJsonApiResource($linkPrefix = '/forest') { $toReturn = new JsonApi\resource($this->getCollection()->getName(), $this->getId()); $toReturn->fill_data($this->getAttributes()); foreach ($this->getRelationships() as $relationship) { $resource = new JsonApi\resource($relationship->getType(), $relationship->getId()); $toReturn->add_relation($relationship->getType(), $resource); } foreach ($this->getIncluded() as $resource) { $toInclude = new JsonApi\resource($resource->getCollection()->getName(), $resource->getId()); // NOTE : alsvanzelf/jsonapi takes current request to build set_self_link // => included resources must set it "manually" $toInclude->set_self_link($linkPrefix . '/' . $resource->getCollection()->getName() . '/' . $resource->getId()); $toInclude->fill_data($resource->getAttributes()); $toReturn->add_included_resource($toInclude); } return $toReturn; }