我在 CodeIgniter 的模型中有一个函数,我在其中插入数据库并返回$result=$this->db->insert_id();
return $result;
。我在这个模型中有另一个函数,我在另一个表中插入其他值,我需要在一个列中插入$result=$this->db->insert_id();
return $result;
. 但是正如我所做的那样,因此 function add_teacher_subject()
再次运行:$insert_id=$this->add_teacher_subject();
当第二个函数执行时,例如我不是 insert_id=5,而是 insert_id=6。如何从第一个函数插入第二个函数 insert_id?这是我的代码:
public function add_teacher_subject() {
$date = new DateTime("now");
$data=array(
'teacher_id'=>$this->input->post('teacher'),
'subject_id'=>$this->input->post('subject'),
'survey_id'=>$this->uri->segment(3),
'user_id'=>$this->session->userdata['user_id'],
'survey_code'=>$this->input->post('random_code'),
'created_at'=>$date->format('Y-m-d H:i:s')
);
$this->db->insert('student_surveys',$data);
$result=$this->db->insert_id();
return $result;
}
public function survey_fill()
{
$insert_id=$this->add_teacher_subject();
if ($this->input->post('answer')) {
$answers= $this->input->post('answer');
if (null !==($this->input->post('submit'))) {
$date = new DateTime("now");
foreach($answers as $question_id=>$answer)
{
$data = array(
'user_id'=>$this->session->userdata['user_id'],
'question_id'=>$question_id,
'answer'=>$answer,
'created_at'=>$date->format('Y-m-d H:i:s'),
'student_survey_id' => $insert_id //I want $insert_id from function survey_fill() How to get it
);
$this->db->insert('survey_answers', $data);
}
}
if($this->db->affected_rows() > 0)
{
return true;
}
return false;
}
}
Еedited 问题:我尝试将这两个函数合并为一个,以便从第一个到第二个使用 insert_id,并且我使用了参数,但它仍然没有我想要的结果。如何使用这些参数,我想在我第一次调用 add_teacher_subject() 时插入$this->db->insert('student_surveys',$data);
。当我第二次调用它时,使用第一个查询中的 insert_id:$insert_id=$this->db->insert_id();
我的模型现在是:
public function add_teacher_subject($subject=0, $survey) {
if($subject) {
$date = new DateTime("now");
$data=array(
'teacher_id'=>$this->input->post('teacher'),
'subject_id'=>$this->input->post('subject'),
'survey_id'=>$this->uri->segment(3),
'user_id'=>$this->session->userdata['user_id'],
'survey_code'=>$this->input->post('random_code'),
'created_at'=>$date->format('Y-m-d H:i:s')
);
$this->db->insert('student_surveys',$data);
$insert_id=$this->db->insert_id();
}
if($survey) {
if ($this->input->post('answer')) {
$answers= $this->input->post('answer');
if (null !==($this->input->post('submit'))) {
$date = new DateTime("now");
foreach($answers as $question_id=>$answer)
{
$data = array(
'user_id'=>$this->session->userdata['user_id'],
'question_id'=>$question_id,
'answer'=>$answer,
'created_at'=>$date->format('Y-m-d H:i:s'),
'student_survey_id' => $insert_id
);
$this->db->insert('survey_answers', $data);
}
}
return $insert_id;
if($this->db->affected_rows() > 0)
{
return true;
}
} return false;
}
}
我的控制器是:
public function survey_fill()
{
//form_validation for teacher and subject
if ($this->form_validation->run()==FALSE)
{
$this->survey_show();
}
else
{
$survey=$this->uri->segment(3);
if ($this->user_model->add_teacher_subject($survey))
{
echo "You filled survey!";
echo "<script>setTimeout(\"location.href = '/survey/index.php/index/surveys_show';\",1500);</script>";
}
}
}
public function student_surveys() {
//form validation for survey answers
if ($this->form_validation->run()==FALSE)
{
$this->student_surveys_show();
}
else
{
$subject=$this->input->post('subject');
$this->user_model->add_teacher_subject($subject);
if($this->db->affected_rows() > 0)
{
$survey_id = $this->uri->segment(3);
redirect('/index/survey_show/' . $survey_id);
}
}