这是一个新手问题,但我无法在任何地方找到答案。我正在尝试从 Symfony 3.4 中的控制器返回 JSON 响应。在控制器中我有:namespace MegBundle\Controller;use Symfony\Bundle\FrameworkBundle\Controller\Controller;use Symfony\Component\Routing\Annotation\Route;use MegBundle\Entity\message;use Doctrine\ORM\Tools\Pagination\Paginator;use Symfony\Component\HttpFoundation\JsonResponse;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\HttpFoundation\Request;use Doctrine\Common\Inflector\Inflector;use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;class MegController extends Controller{ /** * @Route("/message/board/page/{page}", name = "message_board", defaults = {"page" = 1}, requirements = {"page" = "\d+"}) * @Method("GET") */ public function showMeg(Request $request, $page) { $entityManager = $this->getDoctrine()->getEntityManager(); if ($request->query->get("DESC") != null) { $orderById = "DESC=ID"; $orderby = 'DESC'; } if ($request->query->get("DESC") == null) { $orderById = "ASC=ID"; $orderby = 'ASC'; } $per = 5; $start = ($page-1)*$per; $query = $entityManager->createQueryBuilder() ->select("r") ->from("MegBundle:message", "r") ->orderBy('r.id', $orderby) ->setFirstResult($start) ->setMaxResults($per); }但我明白了调用数组上的成员函数 getName()。我希望我能像这样得到 JosnResponse{"result":"ok","ret":{"name":[{"name":"AAA","mes":"1234","update_time":"2019-09-20 10:54: 50"},{"name":"AAA","mes":"1234","update_time":"2019-09-20 11:08:53"},{"name":"赖","mes ":"AppleAppleappleAPPLE","update_time":"2019-09-20 11:11:09"}]}
1 回答
慕勒3428872
TA贡献1848条经验 获得超6个赞
您的 $data 是一个数据数组,(请参阅$query->getQuery()->getArrayResult()
)
因此,您正在尝试从数组中获取属性,而不是从适当的对象中访问它们。
由于您已经获得了一个数组结果,并且您想将其放在 json 的名称部分中,因此您可以将jsonResponse更改为:
return new JsonResponse(['result' => 'ok', 'ret' => ['name' => $data]]);
您可能需要更改查询以指定要获取哪些属性而不是获取整个实体,在您的情况下为 name、mes和update_time。
就像是 :
$entityManager->createQueryBuilder() ->select("r.name, r.mes, r.update_time") //...
- 1 回答
- 0 关注
- 184 浏览
添加回答
举报
0/150
提交
取消