Es imprescindible comprender el código de forma correcta antes de adaptarlo a tu trabajo y si ttienes algo que aportar puedes comentarlo.
Solución:
Creo que la respuesta de @darkangelo necesita explicaciones.
Él findAll()
El método devuelve una colección de objetos.
$categorias = $this->getDoctrine()
->getRepository('AppBundle:Categoria')
->findAll();
Para construir su respuesta, debe agregar todos los captadores de sus entidades a su respuesta como:
$arrayCollection = array();
foreach($categorias as $item)
$arrayCollection[] = array(
'id' => $item->getId(),
// ... Same for each property you want
);
return new JsonResponse($arrayCollection);
Usar QueryBuilder
le permite devolver resultados como matrices que contienen todas las propiedades:
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
'SELECT c
FROM AppBundle:Categoria c'
);
$categorias = $query->getArrayResult();
return new JsonResponse($categorias);
Él getArrayResult()
evita la necesidad de captadores.
Necesitas hacer esto (basado en la respuesta anterior):
public function getAllCategoryAction()
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
'SELECT c
FROM AppBundle:Categoria c'
);
$categorias = $query->getArrayResult();
$response = new Response(json_encode($categorias));
$response->headers->set('Content-Type', 'application/json');
return $response;
Funciona perfecto con cualquier Query que Doctrine devuelva como array.
/**
* @Route("/api/list", name="list")
*/
public function getList(SerializerInterface $serializer, SomeRepository $repo): JsonResponse
$models = $repo->findAll();
$data = $serializer->serialize($models, JsonEncoder::FORMAT);
return new JsonResponse($data, Response::HTTP_OK, [], true);
Reseñas y valoraciones
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)