我有一个与Codeigniter项目相关的MySQL表,该表用于维护文件的详细信息,如下所示(tbl_documents):
user@disp3221:~$ sudo python3 -m pip install fuckit
Collecting fuckit
Downloading https://files.pythonhosted.org/packages/cc/f4/0952081f9e52866f4a520e2d92d27ddf34f278d37204104e4be869c6911d/fuckit-4.8.1.zip
Building wheels for collected packages: fuckit
Running setup.py bdist_wheel for fuckit ... done
Stored in directory: /root/.cache/pip/wheels/a9/24/e6/a3e32536d1b2975c23ac9f6f1bdbc591d7b968e5e0ce6b4a4f
Successfully built fuckit
Installing collected packages: fuckit
Successfully installed fuckit-4.8.1
user@disp3221:~$
user@disp3221:~$ ./test.py
two
user@disp3221:~$
下表(tbl_subjects)引用了subject_id:
+-----+---------+-------+------------+-----------+--------+---------+--------+
| id | file_no | name | subject_id | folder_no | row_no | rack_no | status |
+-----+---------+-------+------------+-----------+--------+---------+--------+
| 100 | GSP/01 | Test | 1 | 1 | 1 | 2 | 1 |
| 101 | GSP/02 | Test1 | 2 | 2 | 1 | 3 | 1 |
| 102 | GSP/03 | Test2 | 1 | 2 | 1 | 3 | 1 |
| 103 | GSP/04 | Test3 | 3 | 2 | 2 | 1 | 1 |
| 104 | GSP/05 | Test4 | 4 | 1 | 1 | 1 | 1 |
+-----+---------+-------+------------+-----------+--------+---------+--------+
插入,更新和删除记录工作正常。如果我使用tbl_subject中现有的subject_id编辑记录,则该功能正常运行。但是我想在tbl_documents表中编辑一条记录,同时在tbl_subject表中插入新主题时,该功能无法正常工作(我的要求)。我的问题主要是针对subject_id。我在控制器中使用了以下几行。
+------------+--------------+--------+
| subject_id | subject_name | status |
+------------+--------------+--------+
| 1 | A/01 | 1 |
| 2 | A/02 | 1 |
| 3 | A/03 | 1 |
| 4 | B/01 | 1 |
| 5 | B/02 | 1 |
| 6 | C/01 | 1 |
+------------+--------------+--------+
public function store($id = null)
{
$this->form_validation->set_rules('name', "File/Document Name", 'required');
if ($this->form_validation->run()) {
$subject_id = $this->input->post('subject_id');
$sub_data = [];
$sub_data = array(
'subject_name' => $subject_id,
'status' => 1
);
$data = array(
'file_no' => $this->input->post('file_no'),
'name' => $this->input->post('file_name'),
'subject_id' => $this->input->post('subject_id'),
'folder_no' => $this->input->post('folder_no'),
'rack_no' => $this->input->post('rack_no'),
'row_no' => $this->input->post('row_no'),
'status' => 1
);
}
if ($this->form_validation->run() && $this->documents_model->save($data, $id, $sub_data)) {
if ($id)
$message = 'File/ Document Details have been Updated successfully..!!';
else
$message = 'File/ Document details have been saved successfully..!!';
$this->session->set_flashdata('message', $message);
redirect('documents');
} else {
redirect('documents');
}
}
public function save($item, $id, $sub_data = [])
{
$this->db->trans_start();
if (!empty($sub_data)) {
$this->db->insert('tbl_subjects', $sub_data);
$data['subject_id'] = $this->db->insert_id();
}
if ($id) {
$this->db->update('tbl_documents', $item, array('id' => $id));
} else {
$this->db->insert('tbl_documents', $item);
}
$this->db->trans_complete();
return $this->db->trans_status();
}