2014-07-09 189 views
0

我有兩個疑問:合併兩個查詢到一個JSON對象

1) $result = $this->_db->get_where("wishes",array("is_open"=>1))->result_array(); 
2) $requirements_result = $this->_db->get("requirements")->result_array(); 

我想輸出的數據在此JSON格式:

{ 
    [ 
     { 
     id:12, 
     title:"Meet Messi", 
     image_url:"http://dsadsa.dsadsa", 
     previewImageUrl:"http://kdjfla.com" 
     is_open:"true" 
     requirements: [ 
     { 
     id: 123, 
     title:"kiss Messi", 
     is_complete: true 
     } 
    ] 
     } 

    ] 
    } 
} 

我創建了兩個模型(每查詢)。 這是我迄今所做的:

$result = $this->_db->get_where("wishes",array("is_open"=>1))->result_array(); 
$requirements_result = $this->_db->get("requirements")->result_array(); 

$return_array = array(); 
foreach ($result as $value) 
{     
    $wishes_model = new wishes_model(); 
    $wishes_model->init_wishes($value); 
    $return_array[] = $wishes_model; 
} 
return $return_array; 

如何插入我的要求導致創建這個JSON?

+0

什麼是數據庫API?你需要寫一個'JOIN',它提供了一個方法來做到這一點? – Barmar

+0

是的,我可以寫一個JOIN。 問題以這種JSON格式組織它 – user3282988

+1

循環播放結果。如果'wish' ID與前一個相同,則將'requirements'列添加到'requirements'數組。如果沒有,請向'$ return_array'添加一個新的'wishes'元素。 – Barmar

回答

1

首先,創建wishes數組作爲一個關聯數組,與ID爲關鍵:

$wishes_array = array(); 
foreach ($results as $value) { 
    $wishes_model = new wishes_model(); 
    $wishes_model->init_wishes($value); 
    $wishes_array[$value['id']] = $wishes_model; 
} 

那麼你可以添加的要求,以適當的希望:

foreach ($requirements_results as $req) { 
    $wishes_array[$req['wish_id']]->requirements[] = $req; 
} 

我對你的appl中的哪些東西做了一些假設關聯是關聯數組與對象。你應該能夠調整這個來匹配你的具體實現。

+0

非常感謝! – user3282988

0

你好喜歡你有2個結果說RESULT1和RESULT2

可以使2 foreach循環每個並將它們存儲在兩個不同的數組,然後 讓你通過它的結果,並對其進行編碼。

看看它是如何工作的:

foreach ($result1 as $res) 
{ 
    $result_s1[]=$res; 
} 
foreach($result2 as $cmd) 
{ 
    result_s1[]=$cmd; 
} 
$resultdata[]=array_merge($result_s1,$result_s2) 
+0

這不會給他想要的結果。 'requirements'應該是相應'wishes'元素的一個元素。 – Barmar

0

我有幾個問題,但現在我會猜測。 您可以嘗試array_merge,但它會覆蓋相同的密鑰。 如果你不希望你可以向鍵添加前綴,然後合併兩個數組。

我想你已經在這裏的其他解決方案。