如何在同一模型中的另一个方法中使用模型中的一个方法的insert_id [英] How can I use insert_id from one method in model in another method in the same model

查看:109
本文介绍了如何在同一模型中的另一个方法中使用模型中的一个方法的insert_id的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个问题与insert_id。我使用CodeIgniter。我有一个方法,其中我插入一些值,并在其中我返回

I have a problem with insert_id. I'm using CodeIgniter. I have a method in which I insert some values and in it I return

$insert_id=$this->db->insert_id();
return $insert_id;`

我想在同一个方法中使用此值模型。我试过: $ insert_id = $ this-> add_teacher_subject(); 但这样第一个方法再次运行,我不接收last_insert_id,但这个值+1 。请告诉我如何解决这个问题?

I want to use this value in another method in the same model. I tried that: $insert_id=$this->add_teacher_subject(); but in this way first method runs again and I doesn't receive last_insert_id , but this value +1. Please, tell me how could I solve this problem?

我的模型是:

 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);

                }

            }


推荐答案

您可以使用SESSION []保留最后一个插入ID:

You can use SESSION[] for keeping last insert 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);
            }
        }
    }
}

这篇关于如何在同一模型中的另一个方法中使用模型中的一个方法的insert_id的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆