提问人:ivva 提问时间:5/2/2015 最后编辑:Saagar Elias Jackyivva 更新时间:5/2/2015 访问量:558
如何在同一模型中的另一个方法中使用模型中一个方法的insert_id
How can I use insert_id from one method in model in another method in the same model
问:
我对insert_id有问题。我正在使用 CodeIgniter。我有一个方法,我在其中插入一些值,并在其中返回
$insert_id=$this->db->insert_id();
return $insert_id;`
我想在同一模型中的另一个方法中使用此值。我试过了:但是这样第一个方法再次运行,我没有收到last_insert_id,但是这个值+1。请告诉我如何解决这个问题?$insert_id=$this->add_teacher_subject();
我的模型是:
public function add_teacher_subject() {
$date = new DateTime("now");
$data=array(
'teacher_id'=>$this->input->post('teacher'),
'user_id'=>$this->session->userdata['user_id'],
'created_at'=>$date->format('Y-m-d H:i:s')
);
$this->db->insert('student_surveys',$data);
$insert_id=$this->db->insert_id();
return $insert_id;
}
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,
'student_survey_id' => $insert_id
);
$this->db->insert('survey_answers', $data);
}
}
答:
2赞
Mojtaba Rezaeian
5/2/2015
#1
您可以使用 SESSION[] 来保留上次插入的 ID:
public function add_teacher_subject() {
$date = new DateTime("now");
$data = array(
'teacher_id' => $this->input->post('teacher'),
'user_id' => $this->session->userdata['user_id'],
'created_at' => $date->format('Y-m-d H:i:s')
);
$this->db->insert('student_surveys', $data);
$insert_id = $this->db->insert_id();
$newdata = array('insert_id' => $insert_id);
$this->session->set_userdata($newdata);
return $insert_id;
}
public function survey_fill() {
$insert_id = $this->session->userdata('insert_id');
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,
'student_survey_id' => $insert_id
);
$this->db->insert('survey_answers', $data);
}
}
}
}
评论
1赞
ivva
5/2/2015
谢谢你的回答!我尝试了第一种方法,但我得到:列“student_survey_id”不能为空,survey_fill() 中的 $insert_id 为 null。
0赞
Mojtaba Rezaeian
5/2/2015
所以你正在使用 codeigniter 数据库自动函数进行插入/更新。
1赞
Mojtaba Rezaeian
5/2/2015
您可以将其保存在其他位置$config例如文件,或者定义一个静态库来保存insert_id。
1赞
ivva
5/2/2015
您已经编写了如何在模型中执行此操作,但是应该如何在配置文件中定义它?
1赞
Mojtaba Rezaeian
5/2/2015
只需在“application/config/config.php”文件中添加这行代码,它就会添加到您的配置变量中:$config['_insert_id_teacher'] = '';
评论