2017-02-25 59 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