2017-02-25 58 views
1

早上好,PDO:組屬性而不是重複行

我有一個請求,返回幾個信息的預訂,每個預訂可以鏈接到幾個房間。

是否有可能有一個房間的陣列,而不是每次他們是多個房間預訂時重複行。

我想要什麼:

[ 
    idReservation1 => [ 
     "client_name" => "mathieu bortolaso", 
     "checkin" => "2017-08-08", 
     "d_checkout" => "2017-08-10", 
     "email" => "[email protected]", 
     room_id => [1,2,3,9]//here I want an array 
    ], 
    idReservation2 => [ 
     "client_name" => "firstname lastname", 
     "checkin" => "2017-08-18", 
     "d_checkout" => "2017-08-20", 
     "email" => "[email protected]", 
     "room_id" => [1,12,13,9]//here I want an array 
    ] 
] 

如果idReservation不是關鍵不要緊,這裏最重要的是有ROOM_ID 數組我期待所有PDO抓取模式,但他們不這樣做,似乎以配合我的問題。

我的請求:

$prep = $this->pdo->prepare(" 
      SELECT re.id as resId, re.client_name, re.d_checkin, re.d_checkout, re.mail, ro_re.room_id as room 
      FROM Reservation re 
      JOIN Room_Reservation ro_re ON ro_re.reservation_id = re.id 
      WHERE re.confirmed = false 
     "); 

由於

回答

1

假設你與的MySQL工作:使用GROUP_CONCAT函數的溶液(以組 IDS每個預約):

$stmt = $this->pdo->prepare(" 
      SELECT 
       re.id as resId, re.client_name, re.d_checkin, re.d_checkout, re.mail, 
       GROUP_CONCAT(ro_re.room_id SEPARATOR ',') AS room_ids 
      FROM 
       Reservation re 
       INNER JOIN Room_Reservation ro_re ON ro_re.reservation_id = re.id 
      WHERE re.confirmed = false 
      GROUP BY re.id 
"); 

$stmt->execute(); 

// `room_ids` column will contain a string like "1,2,3,9" 
$result = []; 
foreach ($stmt->fetchAll(\PDO::FETCH_ASSOC) as $row) { 
    $row['room_ids'] = explode(',', $row['room_ids']); // converting string with room ids into array 
    $result[] = $row; 
} 
+0

謝謝,這是e xactly我需要什麼 – bormat

+0

@bormat,不客氣 – RomanPerekhrest