Return a JSON array from a Controller in Symfony

后端 未结 7 982
一个人的身影
一个人的身影 2020-12-17 14:30

I am trying return a JSON response from a controller in Symfony 2. Form example, in Spring MVC I can get a JSON response with @ResponseBody annotattion. I want get a JSON re

7条回答
  •  没有蜡笔的小新
    2020-12-17 15:01

    I think the @darkangelo answer need explainations.

    The findAll() method return a collection of objects.

    $categorias = $this->getDoctrine()
                       ->getRepository('AppBundle:Categoria')
                       ->findAll();
    

    To build your response, you have to add all getters of your entities to your response like :

    $arrayCollection = array();
    
    foreach($categorias as $item) {
         $arrayCollection[] = array(
             'id' => $item->getId(),
             // ... Same for each property you want
         );
    }
    
    return new JsonResponse($arrayCollection);
    

    Use QueryBuilder allows you to return results as arrays containing all properties :

    $em = $this->getDoctrine()->getManager();
    $query = $em->createQuery(
        'SELECT c
        FROM AppBundle:Categoria c'
    );
    $categorias = $query->getArrayResult();
    
    return new JsonResponse($categorias);
    

    The getArrayResult() avoids need of getters.

提交回复
热议问题