2017-07-21 10 views
-3

私は2つのmysqlテーブルorderorderitemsを持っています。
ここでは、別々のモニタにangularjsを使ってこれらのデータを表示したいと考えています。
私のテーブル構造:
orderorderitemsorder_id, food_item, item_qty, dalivery
特定の形式で表示するデータを取得する

が含まれていid, table_id, date_time
が含まれている今、私は別々のHTMLのdivの内側にこれらのデータを表示したいです。見出しとしてtable_idおよび内容としてorderitemsを含む。そのために

私は、どのように私はCodeIgniterのか、MySQLを使用してクエリを作るのです。この

[{ 
table_id, 
date_time, 
items: [ 
    { 
    food_item, 
    item_qty, 
    delivery 
}, 
{ 
    food_item, 
    item_qty, 
    delivery 
} 
] 
}] 


のようなデータ構造をしたいですか?

答えて

1

あなたは自分の注文データここ

持つすべての注文項目を選択することができますが(https://eval.in/835997

このデモでは、テストのために偽のデータに依存ライブデモを試すのMysqliソリューション

$mysqli = new mysqli("example.com", "user", "password", "database"); 

$query = " SELECT * FROM order LEFT JOIN orderitems ON order.id = orderitems.order_id "; 
$stmt = $mysqli->prepare($query); 
!$stmt ? die('error') : ""; 
$stmt->execute(); 
$result = $stmt->get_result(); 


while ($row = $result->fetch_array(MYSQLI_ASSOC)) { 
    if($lastOrderId != $row['id']){ 
     if($order){ 
      $finalArray[] = $order; 
     } 
     $lastOrderId = $row['id']; 
     $order = new \stdClass(); 
     //$order->id = $row['id']; 
     $order->table_id = $row['table_id']; 
     $order->date_time = $row['date_time']; 
     $order->items = []; 
    } 
    if($row['food_item']){ 
     $orderItem = new \stdClass(); 
     $orderItem->food_item = $row['food_item']; 
     $orderItem->item_qty = $row['item_qty']; 
     $orderItem->dalivery = $row['dalivery']; 
     $order->items[] = $orderItem; 
    } 
} 
//last order in loop 
if($order){ 
    $finalArray[] = $order; 
} 
print_r($finalArray) ; 
exit; 

です

$row1 = ["id"=>1,"table_id"=>5,"date_time"=>"2017-12-31","food_item"=>1,"item_qty"=>1,"dalivery"=>"yes"]; 
$row2 = ["id"=>1,"table_id"=>5,"date_time"=>"2017-12-31","food_item"=>2,"item_qty"=>2,"dalivery"=>"no"]; 
$row3 = ["id"=>2,"table_id"=>5,"date_time"=>"2017-12-31","food_item"=>3,"item_qty"=>3,"dalivery"=>"yes"]; 
$row4 = ["id"=>2,"table_id"=>5,"date_time"=>"2017-12-31","food_item"=>4,"item_qty"=>4,"dalivery"=>"no"]; 

$rows = [$row1, $row2, $row3, $row4]; 

Array 
(
    [0] => stdClass Object 
     (
      [table_id] => 5 
      [date_time] => 2017-12-31 
      [items] => Array 
       (
        [0] => stdClass Object 
         (
          [food_item] => 1 
          [item_qty] => 1 
          [dalivery] => yes 
         ) 
        [1] => stdClass Object 
         (
          [food_item] => 2 
          [item_qty] => 2 
          [dalivery] => no 
         ) 
       ) 
     ) 
    [1] => stdClass Object 
     (
      [table_id] => 5 
      [date_time] => 2017-12-31 
      [items] => Array 
       (
        [0] => stdClass Object 
         (
          [food_item] => 3 
          [item_qty] => 3 
          [dalivery] => yes 
         ) 
        [1] => stdClass Object 
         (
          [food_item] => 4 
          [item_qty] => 4 
          [dalivery] => no 
         ) 
       ) 
     ) 
) 
+1

私は仲間でした。私はarray_push()を使用しました。 – Rifthy

+0

@Rifthyあなたは歓迎です:) –

0

Codeigniterを使用する。おそらくPDOと同じです。

$data = array(); 
     $tables = $this->db->select('table_data.*, order.id As order_id, order.date_time') 
          ->join('order', 'order.table_id = table_data.id') 
          ->where('order.status', 'Pending') 
          ->get('table_data')->result_array(); 
     foreach ($tables as $table) { 
      $items = $this->db->select('orderitems.food_item, orderitems.item_qty') 
           ->where('order_id', $table['order_id']) 
           ->get('orderitems')->result_array(); 
      array_push($data, array('details' => $table, 'items' => $items)); 
     } 
     $this->response($data); 
関連する問題