2016-08-23 12 views
0

iは4テーブルuhd_voucher_menuuhd_menuuhd_voucher_variant_menuを有する人、uhd_variant_menuuhd_voucher_variant_menuuhd_voucher_menuvoucher_menu_idと最後、uhd_variant_menuvoucher_variant_menuによって接続されているよりmenu_idによって接続されuhd_voucher_menuuhd_menuCodeIgniterのアクティブレコードが4テーブル

に参加するとvariant_menu_id

によって接続されているこれは、私は、データを取得する方法私のコードです:

recoredそのアクティブから
 $this->db->select("uhd_voucher_menu.voucher_id,uhd_menu.menu_name,uhd_voucher_menu.qty,uhd_variant_menu.variant_name,uhd_voucher_menu.voucher_menu_id"); 
     $this->db->from("uhd_voucher_menu"); 
     $this->db->join("uhd_menu","uhd_menu.menu_id = uhd_voucher_menu.menu_id"); 
     $this->db->join("uhd_voucher_variant_menu","uhd_voucher_variant_menu.voucher_menu_id = uhd_voucher_menu.voucher_menu_id","left"); 
     $this->db->join("uhd_variant_menu","uhd_variant_menu.variant_menu_id = uhd_voucher_variant_menu.variant_menu_id","left"); 
     $this->db->where("voucher_id",$data["voucher"]["voucher_id"]); 
     $this->db->where("uhd_menu.restaurant_id",$restaurant_id); 
     $res = $this->db->get()->result_array(); 

は、このデータへのリターンになります:あなたは同じvoucher_menu_idgolden_salmonを見るように

[0]=> 
array(5) { 
    ["voucher_id"]=> 
    string(1) "1" 
    ["menu_name"]=> 
    string(13) "Golden Salmon" 
    ["qty"]=> 
    string(1) "2" 
    ["variant_name"]=> 
    string(5) "Spicy" 
    ["voucher_menu_id"]=> 
    string(1) "3" 
} 
[1]=> 
array(5) { 
    ["voucher_id"]=> 
    string(1) "1" 
    ["menu_name"]=> 
    string(13) "Golden Salmon" 
    ["qty"]=> 
    string(1) "2" 
    ["variant_name"]=> 
    string(6) "Medium" 
    ["voucher_menu_id"]=> 
    string(1) "3" 
} 
[2]=> 
array(5) { 
    ["voucher_id"]=> 
    string(1) "1" 
    ["menu_name"]=> 
    string(13) "Golden Salmon" 
    ["qty"]=> 
    string(1) "1" 
    ["variant_name"]=> 
    string(4) "Sour" 
    ["voucher_menu_id"]=> 
    string(1) "4" 
} 
[3]=> 
array(5) { 
    ["voucher_id"]=> 
    string(1) "1" 
    ["menu_name"]=> 
    string(13) "Golden Salmon" 
    ["qty"]=> 
    string(1) "1" 
    ["variant_name"]=> 
    string(6) "Medium" 
    ["voucher_menu_id"]=> 
    string(1) "4" 
} 
[4]=> 
array(5) { 
    ["voucher_id"]=> 
    string(1) "1" 
    ["menu_name"]=> 
    string(14) "Red Crown Crab" 
    ["qty"]=> 
    string(1) "2" 
    ["variant_name"]=> 
    NULL 
    ["voucher_menu_id"]=> 
    string(1) "1" 
} 
[5]=> 
array(5) { 
    ["voucher_id"]=> 
    string(1) "1" 
    ["menu_name"]=> 
    string(8) "Omellete" 
    ["qty"]=> 
    string(1) "3" 
    ["variant_name"]=> 
    NULL 
    ["voucher_menu_id"]=> 
    string(1) "2" 
} 

ので、このデータから、二回

voucher_menu_idが同じであれば、私が欲しい戻る次のとおりです。

01:

[0]=> 
array(5) { 
    ["voucher_id"]=> 
    string(1) "1" 
    ["menu_name"]=> 
    string(13) "Golden Salmon" 
    ["qty"]=> 
    string(1) "2" 
    ["variant_name"]=> 
    string(5) "Spicy" 
    ["voucher_menu_id"]=> 
    string(1) "3" 
} 
[1]=> 
array(5) { 
    ["voucher_id"]=> 
    string(1) "1" 
    ["menu_name"]=> 
    string(13) "Golden Salmon" 
    ["qty"]=> 
    string(1) "2" 
    ["variant_name"]=> 
    string(6) "Medium" 
    ["voucher_menu_id"]=> 
    string(1) "3" 
} 

iは、そのデータの戻りがこれをなりたいです私は同じvoucher_menu_idのデータが二回

人を呼び出さない場合は、あなたがデータを実行するためにどのように私を助けることができるようvariant_nameが配列になっているしたいと同じvoucher_menu_id4

と他のgolden_salmon同じ

[0]=> 
array(5) { 
    ["voucher_id"]=> 
    string(1) "1" 
    ["menu_name"]=> 
    string(13) "Golden Salmon" 
    ["qty"]=> 
    string(1) "2" 
    ["variant_name"]=> 
    array(2){ 
    [1]=> 
    string(5) "Spicy" 
    [2]=> 
    string(6) "Medium" 
    } 
    ["voucher_menu_id"]=> 
    string(1) "3" 
} 

私が望むように? は(ありがとう:

答えて

-1

あなたがして、グループを使用する必要があり、私は少し修正照会:

$this->db->select("uhd_voucher_menu.voucher_id,uhd_menu.menu_name,uhd_voucher_menu.qty,GROUP_CONCAT(uhd_variant_menu.variant_name SEPARATOR ',') AS variants,uhd_voucher_menu.voucher_menu_id"); 
    $this->db->from("uhd_voucher_menu"); 
    $this->db->join("uhd_menu","uhd_menu.menu_id = uhd_voucher_menu.menu_id"); 
    $this->db->join("uhd_voucher_variant_menu","uhd_voucher_variant_menu.voucher_menu_id = uhd_voucher_menu.voucher_menu_id","left"); 
    $this->db->join("uhd_variant_menu","uhd_variant_menu.variant_menu_id = uhd_voucher_variant_menu.variant_menu_id","left"); 
    $this->db->where("voucher_id",$data["voucher"]["voucher_id"]); 
    $this->db->where("uhd_menu.restaurant_id",$restaurant_id); 
$this->db->group_by("uhd_voucher_menu.voucher_id"); 
    $res = $this->db->get()->result_array(); 

我々はカンマがクエリ出力後に配列に値を区切って変換することができます

試してみて、投稿してください。結果...

+0

唯一の戻り値1データ – Kelvin

+0

echo $ this-> db-> last_query(); –

関連する問題