0

私は次のことを試してみましたが、驚くべきことに、最初のテーブル (new_guest) にのみデータを入力し、他のテーブル (new_reservation) にはゼロ値のみを書き込みます。これを適切に構成するにはどうすればよいですか?

コントローラ:

function guest_checks_in() {    

    $data_guest = array (
        'guest_title' => $this->input->post('guest_title'),
        'guest_name' => $this->input->post('guest_name'),
        'guest_gender' => $this->input->post('guest_gender'),
        'guest_phone' => $this->input->post('guest_phone'),
        'guest_email' => $this->input->post('guest_email'),
        'guest_address' => $this->input->post('guest_address'),
        'guest_province' => $this->input->post('guest_province'),
        'guest_country' => $this->input->post('guest_country'),
        'guest_postal_code' => $this->input->post('guest_postal_code'),
        'guest_dob' => $this->input->post('guest_dob'),
        'guest_nic_pp_dl' => $this->input->post('guest_nic_pp_dl')
    );

    $data_reservation = array (
        'room_type' => $this->input->post('room_type'),
        'meal_type' => $this->input->post('meal_type'),
        'bed_type' => $this->input->post('bed_type'),
        'ext_beds' => $this->input->post('ext_beds'),
        'number_of_guests' => $this->input->post('number_of_guests'),
        'start_date' => $this->input->post('start_date'),
        'end_date' => $this->input->post('end_date'),
        'reservation_duration' => $this->input->post('reservation_duration'),
        'room_number' => $this->input->post('room_number'),
        'total' => $this->input->post('total')
    );

$this->reservations_model->add_guests($data_guest);
$this->reservations_model->add_reservations($data_reservation);
$this->confirm_check_in();

}

モデル:

class Reservations_model extends CI_Model {

function add_guests($data_guest) {
    $this->db->insert('new_guest', $data_guest);
    return;
}

function add_reservations($data_reservation) {
    $this->db->insert('new_reservation', $data_reservation);
    return;
}

}
4

1 に答える 1

1

トランザクションを使用するとよいでしょう。両方のテーブルのデータを入力する必要がある場合。

function guest_checks_in() {    

$data_guest = array (
    'guest_title' => $this->input->post('guest_title'),
    'guest_name' => $this->input->post('guest_name'),
    'guest_gender' => $this->input->post('guest_gender'),
    'guest_phone' => $this->input->post('guest_phone'),
    'guest_email' => $this->input->post('guest_email'),
    'guest_address' => $this->input->post('guest_address'),
    'guest_province' => $this->input->post('guest_province'),
    'guest_country' => $this->input->post('guest_country'),
    'guest_postal_code' => $this->input->post('guest_postal_code'),
    'guest_dob' => $this->input->post('guest_dob'),
    'guest_nic_pp_dl' => $this->input->post('guest_nic_pp_dl')
);

$data_reservation = array (
    'room_type' => $this->input->post('room_type'),
    'meal_type' => $this->input->post('meal_type'),
    'bed_type' => $this->input->post('bed_type'),
    'ext_beds' => $this->input->post('ext_beds'),
    'number_of_guests' => $this->input->post('number_of_guests'),
    'start_date' => $this->input->post('start_date'),
    'end_date' => $this->input->post('end_date'),
    'reservation_duration' => $this->input->post('reservation_duration'),
    'room_number' => $this->input->post('room_number'),
    'total' => $this->input->post('total')
);

$this->reservations_model->add_all_guests($data_guest,$data_reservation); $this->confirm_check_in();

}

モデルで

function add_all_guests($data_guest,$data_reservation) {
$this->db->trans_begin();
$this->db->insert('new_guest', $data_guest);
$this->db->insert('new_reservation', $data_reservation);
if ($this->db->trans_status() === FALSE)
{
   $this->db->trans_rollback();
   return false;
}
else
{
$this->db->trans_commit();
 return true;
 }
}
于 2013-07-03T17:00:14.917 に答える