我会尝试解释我的问题。我有一个实体,它与另外两个具有多对多关系的实体相连。我想要实现的是使用ajax post方法进行搜索,并接收连接表中连接的所有可能组合。
我真正的问题是,只有在第一个实体中搜索时,才会收到有效的回调数据。
控制器:
if ($request->isXmlHttpRequest()) {
$name = $request->request->get('person_name');
/** @var EntityRepository $repository */
$repository = $this->getDoctrine()->getManager()->getRepository('AppBundle:Connectors');
$qb = $repository->createQueryBuilder('connectors')
->leftJoin('connectors.contacts', 'contacts')
->leftJoin('contacts.cables', 'cables');
$qb->where('connectors.description LIKE :param');
$qb->setParameter('param','%'.$name.'%');
$connectors = [];
$contacts = [];
$cables = [];
foreach ($qb->getQuery()->getResult() as $connector) {
$connectors[] = $connector;
foreach ($connector->getContacts() as $contact) {
$contacts[] = $contact;
foreach ($contact->getCable() as $cable) {
$cables[] = $cable;
}
}
}
// $Data = $qb->getQuery()->getArrayResult();
return new JsonResponse(json_encode($contacts));
}
此时我想发送我收到的$ contacts数组为空(NULL),但更有趣的是[{},{},{},{},{}]大括号的数量相同我想接受的联系人!!
如果注释行未注释且$ Data作为响应发送,则没有问题。
JS
$('#call_back_btn' ).click(function() {
$.post("/app_dev.php/AjaxSearch" ,
{
person_name:$('#input_text').val()
} ,
function (data)
{
console.log(data);
var obj = JSON.parse(data);
console.log(obj);
// for (var key in data)
// {
// if(data.hasOwnProperty(key)){
// console.log(data);
// }
// }
$('#resposeText').val(obj[1].description);
}
);
})
}
);
感谢您的帮助
这是我的控制台输出:
答案 0 :(得分:0)
我已经设法找到了错误。
格式是麻烦,所以我安装了JMSSerializerBundle并将数据转换为JSON
$serializer = $this->container->get('serializer');
$reports = $serializer->serialize($cables, 'json');
$reports1 = $serializer->serialize($contacts, 'json');
return new JsonResponse (array($reports1, $reports));