/** * Render json response. * * @param bool $object * @return \Illuminate\Http\JsonResponse */ public function render($object = false) { $output = array_merge(['draw' => (int) $this->request['draw'], 'recordsTotal' => $this->totalRecords, 'recordsFiltered' => $this->filteredRecords], $this->appends); if (isset($this->transformer)) { $fractal = new Manager(); if ($this->request->get('include')) { $fractal->parseIncludes($this->request->get('include')); } $serializer = $this->serializer ?: Config::get('datatables.fractal.serializer', DataArraySerializer::class); $fractal->setSerializer(new $serializer()); //Get transformer reflection //Firs method parameter should be data/object to transform $reflection = new \ReflectionMethod($this->transformer, 'transform'); $parameter = $reflection->getParameters()[0]; //If parameter is class assuming it requires object //Else just pass array by default if ($parameter->getClass()) { $resource = new Collection($this->results(), new $this->transformer()); } else { $resource = new Collection($this->getProcessedData($object), new $this->transformer()); } $collection = $fractal->createData($resource)->toArray(); $output['data'] = $collection['data']; } else { $output['data'] = Helper::transform($this->getProcessedData($object)); } if ($this->isDebugging()) { $output = $this->showDebugger($output); } return new JsonResponse($output); }