php - 如何在codeigniter的两个不同表中插入和更新值
问题描述
我有两个表'booking'和'schedule',当我在'booking'表中插入值时,我需要在另一个表中插入一些值并更新第二个表中的字段
我的控制器
public function booking(){
$data = $_POST;
$check_seat = $this->Web_model->check_seat($data);
if($check_seat>0){
$result = NULL;
} else {
$booking =$this->Web_model->booking_details($data);
if($booking){
$result = $booking;
} else {
$result = FALSE;
}
}
print json_encode($result);
}
我的模型
public function booking_details( $data){
$booking = array();
$bid ='TKT'.strtotime(date('m/d/Y H:i:s'));
$occupied = 'Occupied';
$busNumber = $data['busNumber'];
$bookingDate = $data['bookingDate'];
$seatLabel = $data['seatLabel'];
$passengerName = $data['passengerName'];
$paymentStatus = $data['paymentStatus'];
$agentId = $data['agentId'];
$booking = array(
'ticketNumber'=>$bid ,
'busNumber'=>$busNumber,
'seatLabel'=>$seatLabel ,
'paymentStatus'=>$paymentStatus,
'passengerName'=>$passengerName,
'passengerPhone'=>$data['passangerPhone'],
'farePaid'=>$data['farePaid'],
'boarding'=>$data['anakopandia'],
'dropping'=>$data['anakoshukia'],
'bookingDate'=>$bookingDate,
'agentGroup'=>$data['agentGroup'],
'agentId'=>$agentId,
'agentName'=>$data['agentName'],
);
$this->db->insert('booking', $booking);
$last_insert_id = $this->db->insert_id();
$schedule = array(
'ticketNumber'=>$bid ,
'paymentStatus'=>$paymentStatus,
'passengerName'=>$passengerName,
'agentId'=>$agentId,
);
$this->db->insert('schedule', $schedule);
$this->db->where('bookingDate',$bookingDate);
$this->db->where('busNumber',$busNumber);
$this->db->where('seatLabel',$seatLabel);
$seatStatus['seatStatus'] = $occupied;
$this->db->update('schedule',$seatStatus);
$query = $this->db->get_where('booking',array('id' => $last_insert_id));
return $query->row();
}
检查座位
public function check_seat($data){
$this->db->where('seatLabel',$data['seatLabel']);
return $query = $this->db->get('booking')->num_rows();
}
从上面的代码中,当我插入值时,我收到一个 FALSE 结果,这意味着没有插入值,但我不知道问题出在哪里。
解决方案
我会说问题是schedule
桌子。您正在指定 4 列的值,而不是全部。
$schedule = array(
'ticketNumber'=>$bid ,
'paymentStatus'=>$paymentStatus,
'passengerName'=>$passengerName,
'agentId'=>$agentId,
);
$this->db->insert('schedule', $schedule);
如果您查看表中的其他列,schedule
例如seatLabel
或seatStatus
...等,它们没有阻止插入数据的默认值。因此,我希望为其他列设置默认值或确保在插入类似这样的内容时填写所有数据的解决方案:
$schedule = array(
'ticketNumber'=>$bid ,
'paymentStatus'=>$paymentStatus,
'passengerName'=>$passengerName,
'agentId'=>$agentId,
'seatLabel' => '',
'busNumber' => '',
...etc
);
$this->db->insert('schedule', $schedule);
推荐阅读
- r - 仅在满足多个条件时才将不同列的值匹配到行
- google-bigquery - 如何用计数部分过滤子集字符串?
- python - 在 Python 中查找具有匹配 XML 标记的任何后代的兄弟姐妹
- wordpress - 有没有办法将多个静态 IP 分配给 Amazon Lightsail 实例?
- android - gridlayout 中的第一项有什么问题?
- python - 查询嵌入在 SQL 查询中的外部元组列表
- java - 从混合了字符串和整数的数组中解析整数
- postgresql - PostgreSQL 的分发、安装和连接
- javascript - 根据计数打破 Object.keys 循环
- typescript - 条件可选参数类型