2014-09-25 3 views
1

Angular JS 애플리케이션에 테이블에 대한 부모 - 자식 관계를 나타내는 JSON을 제공해야합니다. 부모 (그룹) :PlayFramework를 사용하는 JSON의 부모 - 자식 관계

+----+---------------+-------------+----------------+ 
| id | external_code | supplier_id | notes   | 
+----+---------------+-------------+----------------+ 
| 19 | asdfas  |   3 | sadfa   | 
| 23 | 454   |   1 | groupa1  | 
| 24 | sadfas221  |   2 | asfd   | 
| 25 | dsafas  |   2 | NULL   | 
| 21 | 4545   |   1 | asdfasf  | 
+----+---------------+-------------+----------------+ 

아이 (GroupItems) :

+----------+---------+--------+ 
| group_id | item_id | status | 
+----------+---------+--------+ 
|  19 |  1 |  0 | 
|  19 |  2 |  0 | 
|  19 |  3 |  0 | 
|  25 |  2 |  0 | 
+----------+---------+--------+ 

내 원하는 JSON은 다음과 같아야는 :

[ 
{"groupId":"19", 
"notes":"sadfa", 
"extenalCode":"asdfas", 
"supplierId":"2", 
"itemCount":3 
"items":[{"itemId": "1","status":"Created", "weight":23}, 
     {"itemId": "2","status":"Created", "weight":23} 
     {"itemId": "3","status":"Created", "weight":23} 
     ] 

}, 

.... 

] 

문제는 삽입하고 바인드 하위 항목 방법입니다 JSON 의미를 나타내는 부모가 MySQL과 PlayFramework2.0 (Slick)을 사용하고 있습니까? 이 같은

+0

문서의 여러 시퀀스, 각 중첩 levenl 다른 하나는 부모 ID를 추가로 중첩 된 문서의 순서를지도. 그런 다음 insertAll을 사용하여 각 시퀀스의 최상위 항목을 삽입하십시오. – cvogt

+0

@cvogt 이것에 대해 자세히 설명해 주시겠습니까? 나는 scala와 매끈한 API에 정말 새로운 점이 있습니다. –

+0

질문을 잘못 읽었습니까? 데이터베이스 삽입에 대해 묻지 않았습니다. – cvogt

답변

0

약 일 :

val items = 
    GroupItems.join(Items).on(_.itemId === _.id).run // <- query fetching items with group_ids 
      .groupBy(_._1.groupId).toMap 
      .mapValues(_._2) // <- mapping Map values to only items 

// render groups to json and add a field items with the items (I may be wrong about Play's json api names) 
val json = Group.run.map(g => Json.toJson(g) ++ JsObject("items" -> Json.toJson(items(g.id))))