2015-09-03 2 views
1

У меня есть запрос:Как в symfony2 поставить запрос на данные json?

SELECT Bank_ID, Status, COUNT(Bank_ID) FROM int_client_bank WHERE status = 30 or status = 50 or status = 35 or status = 37 GROUP BY Bank_ID, Status; 

И посмотреть данные:

"Bank_ID" "Status" "COUNT(Bank_ID)" 
"1"   "30"  "772" 
"1"   "35"  "58" 
"1"   "50"  "151" 
"2"   "30"  "124" 
"2"   "35"  "27" 
"2"   "50"  "25" 
"3"   "30"  "227" 
"3"   "35"  "16" 
"3"   "37"  "1" 
"3"   "50"  "143" 
"4"   "30"  "337" 
"4"   "35"  "23" 
"4"   "37"  "1" 
"4"   "50"  "98" 
"5"   "30"  "72" 
"5"   "35"  "7" 
"5"   "50"  "9" 
"6"   "30"  "113" 
"6"   "35"  "3" 
"6"   "50"  "68" 
"7"   "30"  "16" 
"7"   "50"  "10" 
"8"   "30"  "13" 
"8"   "35"  "1" 
"8"   "50"  "6" 
"9"   "30"  "16" 
"9"   "35"  "2" 
"9"   "50"  "6" 
"10"  "30"  "4" 
"10"  "35"  "2" 
"11"  "30"  "2" 
"11"  "50"  "2" 
"12"  "30"  "4" 
"12"  "35"  "1" 
"12"  "50"  "1" 
"13"  "30"  "3" 
"13"  "50"  "2" 
"14"  "30"  "5" 
"15"  "30"  "1" 
"15"  "50"  "1" 
"16"  "30"  "1" 
"17"  "30"  "1" 
"18"  "30"  "2" 

Как я могу поместить это в Symfony, чтобы сделать JsonResponse ?:

return new JsonResponse(array('data' => $result, 'success' => true)); 

мне нужны данные, такие как:

{ 
    "data":[ 
     {"Bank_Id":"1","Status":"30","Count":"772"}, 
     {"Bank_Id":"1","Status":"35","Count":"58"}, 
     ... 
    ], 
    "success":true 
} 
+0

Числовые php-массивы обращаются к [] в JSON. ассоциативные массивы превращаются в {} в JSON. Вы не показываете нам, КАК данные визуализируются. Кроме того, почему вы не используете сущность? –

ответ

1

Это не очень понятно, что вы просите, но я думаю, чтобы сделать Symfony сделать JsonResponse на основе ваших данных, делается так:

use Symfony\Component\HttpFoundation\JsonResponse; 
$em = $this->getDoctrine()->getManager(); 
$query = $em->createQuery('SELECT Bank_ID, Status, COUNT(Bank_ID) FROM int_client_bank WHERE status = 30 or status = 50 or status = 35 or status = 37 GROUP BY Bank_ID, Status'); 

$bankResult = $query->getResult(); 
$response = new JsonResponse(); 
$response->setData(array(
    'data' => $bankResult, 
    'success' => true 
)); 
+0

но как я могу сделать запрос доктрины? положить его в json $ bankresult? –

+0

'$ bankResult' не' JSON''JsonResponse'() 'автоматически json кодирует данные вашего массива и добавляет заголовок содержимого. Поэтому просто убедитесь, что '$ bankResult' содержит ваш запрос набора данных/запроса. На примере добавлена ​​некоторая Доктрина. – Timmetje

+0

Tim Dev У меня ошибка: [Semantical Error] строка 0, col 44 около 'int_client_bank': Ошибка: Class 'int_client_bank' не определен. Можно ли изменить этот запрос? $ em = $ this-> getDoctrine() -> getManager() -> getRepository ('OmnisoftIntegBundle: IntClientBank') -> getQuery ....? –

0

Вы должны были бы JSON закодировать массива, а затем отправить его в качестве json.

$jsonArray = array(
      'data' => $result, 
     'success' => true, 
     ); 

     $response = new Response(json_encode($jsonArray)); 
     $response->headers->set('Content-Type', 'application/json; charset=utf-8'); 

     return $response; 
+1

используйте объект JsonResponse, и вам не нужно вручную установите заголовки. –

Смежные вопросы