2016-07-27 3 views
0

у меня есть разные массивы следующим образом: -Объединение нескольких массивов под некоторую логикой

$reservations = ['reservationid' => '1', 'reservationid' => '2', 'reservationid' => '3'] 

$reservedrooms = ['reservationid'=> '1', 'roomno' => '1', 'reservationid' => '1', 'roomid'=>'2', 'reservationid' => '2', 'roomid'=>'3'] 

$guestdata = ['reservationid'=> '1', 'guestname' => 'Adam', 'reservationid' => '1', 'guestname'=>'Abraham', 'reservationid' => '2', 'guestname'=>'David'] 

Как присоединиться к ним, так что они могут быть использованы в качестве вложенного массива с аналогичным reservationids в CodeIgniter? Я также отправил его на клиентскую сторону с помощью Json и отображался в JQuery Datatables. Как достичь этого логически?

У меня следующий код, который работает на нескольких таблицах

$this->db->from('hotelbrancheshasreservations'); 
$this->db->join('reservation', 'reservation.reservationid = hotelbrancheshasreservations.reservations_reservationsid'); 
$this->db->join('reservedrooms', 'reservedrooms.reservation_reservationid = hotelbrancheshasreservations.reservations_reservationsid'); 
$this->db->where(array('hotelbranches_hotelbranchesid'=>$branchid, 'status'=>$status)); 
$reservations = $this->db->get()->result_array(); 

Я хочу привести массив следующим образом: -

$result = array (
"reservationid" => '1', 'rooms' => Array(
    "roomno" => '1', 
    "roomno" => '2'), 'guests' => Array('guestid' => '1', 'guestname' => 'Adam', 'guestid' => '2', 'guestname' => 'David',)); 
+0

Как создать эти 3 массивы. Я угадываю 3 отдельных запроса в вашей базе данных. Покажите этот код, так как это необходимо изменить, чтобы вы получили ** ОДИН ПОЛЕЗНЫЙ массив ** обратно из базы данных. – RiggsFolly

+0

Как вы можете дублировать ключи в своих массивах? – roberto06

+0

- это фактически три таблицы, которые имеют разные элементы данных, но связаны через отношения внешних ключей. Я хочу иметь массив, который должен хранить данные резервирования в качестве родительского массива, а номера и гостевые данные - в виде дочерних массивов. –

ответ

0

Следующий код работает в классе модели, а затем возвращается обратно контроллер. Затем массив объектов контроллера echos json на стороне клиента.

$this->$db->trans_start(); 


$this->$db->from('hotelbrancheshasreservations'); 
$this->$db->join('reservation', 'reservation.reservationid = hotelbrancheshasreservations.reservations_reservationsid'); 
$this->$db->join('reservedrooms', 'reservedrooms.reservation_reservationid = hotelbrancheshasreservations.reservations_reservationsid'); 
$this->$db->where(array('hotelbranches_hotelbranchesid'=>$branchid, 'status'=>$status)); 
$reservations = $this->$db->get()->result_array(); 
$this->$db->trans_complete(); 
return $reservations; 

Приведенный выше код возвращаемые следующий массив после присоединения и в этой задаче решения является то, что, если оговорка имеет более чем зарезервированные номера, то эта строка включается в результирующий набор на несколько раз, и вот почему я должен гнездо зарезервированные номера в резервировании.

следующее результирующее множество:

{"data":[{"hotelbrancheshasreservationsid":"18","hotelbranches_hotelbranchesid":"1","reservations_reservationsid":"KHAN2016Q221","status":"active","tblid":"19","reservationid":"KHAN2016Q221","startdate":"2016-05-16 11:59:00","enddate":"2016-05-21 11:59:00","duration":"","noofroom":"","reservationdate":"2016-05-22 01:41:32","guestarrivaldate":"0000-00-00 00:00:00","gestdeparturedate":"0000-00-00 00:00:00","totalreservedadults":"","totalreservedchilds":"","totalreservationcharges":"","createdby":"","createdon":"0000-00-00 00:00:00","lastmodifiedby":"","lastmodifiedon":"0000-00-00 00:00:00","reservedroomsid":"1","reservation_reservationid":"KHAN2016Q221","hotelrooms_hotelroomsid":"1"},{"hotelbrancheshasreservationsid":"145","hotelbranches_hotelbranchesid":"1","reservations_reservationsid":"KHAN2016Q3-34","status":"active","tblid":"146","reservationid":"KHAN2016Q3-34","startdate":"2016-07-24 00:22:31","enddate":"2016-07-25 00:22:37","duration":"1 days 6 seconds ","noofroom":"2","reservationdate":"2016-07-24 00:26:51","guestarrivaldate":"2016-07-24 00:26:30","gestdeparturedate":"2016-07-25 00:26:35","totalreservedadults":"2","totalreservedchilds":"2","totalreservationcharges":"1200","createdby":"1","createdon":"2016-07-24 00:23:05","lastmodifiedby":"","lastmodifiedon":"0000-00-00 00:00:00","reservedroomsid":"91","reservation_reservationid":"KHAN2016Q3-34","hotelrooms_hotelroomsid":"2"},{"hotelbrancheshasreservationsid":"145","hotelbranches_hotelbranchesid":"1","reservations_reservationsid":"KHAN2016Q3-34","status":"active","tblid":"146","reservationid":"KHAN2016Q3-34","startdate":"2016-07-24 00:22:31","enddate":"2016-07-25 00:22:37","duration":"1 days 6 seconds ","noofroom":"2","reservationdate":"2016-07-24 00:26:51","guestarrivaldate":"2016-07-24 00:26:30","gestdeparturedate":"2016-07-25 00:26:35","totalreservedadults":"2","totalreservedchilds":"2","totalreservationcharges":"1200","createdby":"1","createdon":"2016-07-24 00:23:15","lastmodifiedby":"","lastmodifiedon":"0000-00-00 00:00:00","reservedroomsid":"92","reservation_reservationid":"KHAN2016Q3-34","hotelrooms_hotelroomsid":"1"},{"hotelbrancheshasreservationsid":"146","hotelbranches_hotelbranchesid":"1","reservations_reservationsid":"KHAN2016Q3-35","status":"active","tblid":"147","reservationid":"KHAN2016Q3-35","startdate":"2016-07-25 22:05:36","enddate":"2016-07-26 22:05:41","duration":"1 days 5 seconds ","noofroom":"1","reservationdate":"2016-07-25 22:08:07","guestarrivaldate":"2016-07-25 22:07:53","gestdeparturedate":"2016-07-26 22:07:57","totalreservedadults":"1","totalreservedchilds":"","totalreservationcharges":"1500","createdby":"1","createdon":"2016-07-25 22:05:52","lastmodifiedby":"","lastmodifiedon":"0000-00-00 00:00:00","reservedroomsid":"93","reservation_reservationid":"KHAN2016Q3-35","hotelrooms_hotelroomsid":"4"},{"hotelbrancheshasreservationsid":"147","hotelbranches_hotelbranchesid":"1","reservations_reservationsid":"KHAN2016Q3-36","status":"active","tblid":"148","reservationid":"KHAN2016Q3-36","startdate":"2016-07-26 10:54:05","enddate":"2016-07-27 10:54:10","duration":"1 days 5 seconds ","noofroom":"1","reservationdate":"2016-07-26 10:56:15","guestarrivaldate":"2016-07-26 10:55:58","gestdeparturedate":"2016-07-27 10:56:03","totalreservedadults":"1","totalreservedchilds":"","totalreservationcharges":"700","createdby":"1","createdon":"2016-07-26 10:54:28","lastmodifiedby":"","lastmodifiedon":"0000-00-00 00:00:00","reservedroomsid":"94","reservation_reservationid":"KHAN2016Q3-36","hotelrooms_hotelroomsid":"3"}]} 
Смежные вопросы