Следующий код работает в классе модели, а затем возвращается обратно контроллер. Затем массив объектов контроллера 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"}]}
Как создать эти 3 массивы. Я угадываю 3 отдельных запроса в вашей базе данных. Покажите этот код, так как это необходимо изменить, чтобы вы получили ** ОДИН ПОЛЕЗНЫЙ массив ** обратно из базы данных. – RiggsFolly
Как вы можете дублировать ключи в своих массивах? – roberto06
- это фактически три таблицы, которые имеют разные элементы данных, но связаны через отношения внешних ключей. Я хочу иметь массив, который должен хранить данные резервирования в качестве родительского массива, а номера и гостевые данные - в виде дочерних массивов. –