2013-07-25 3 views
0

나는 이것을 하루 종일 고민하고있다.세션에서 insert_id()를 사용하여 다른 테이블에 삽입하는 방법은 무엇입니까?

내 모델의 첫 번째 삽입물에서 insert_id()을 다른 기능으로 어떻게 사용합니까? 세션을 시도했지만 작동하지 못했습니다.

나는 모든 것을 시도했다. =

session_start(); 
    $this->session->set_userdata('aanbiedingid', $this->db->insert_id()); 

하지만 난 ID로 행을 삽입 할 때 내 ID는 그래서, 자동 증가에 뒤에 하나를 실행 :이 시도

$aanbdata = array(
     'Aanbieding' => $this->input->post('aanbiedingnaam'), 
     'Tekst' => $this->input->post('aanbiedingomschrijving'), 
     'Prijs' => $this->input->post('aanbiedingprijs'), 
     'Conditie' => $this->input->post('aanbiedingconditie'), 
     'prijssoort' => $this->input->post('prijsopties'), 
    );  
    $this->db->insert('Aanbiedingen', $aanbdata); 

:

내 첫 삽입은 다음과 같습니다 4이면 세션은 id = 3입니다.

왜?

편집 :

내 모델 함수 :

public function addaanbieding() 
{ 
    $aanbdata = array(
     'Aanbieding' => $this->input->post('aanbiedingnaam'), 
     'Tekst' => $this->input->post('aanbiedingomschrijving'), 
     'Prijs' => $this->input->post('aanbiedingprijs'), 
     'Conditie' => $this->input->post('aanbiedingconditie'), 
     'prijssoort' => $this->input->post('prijsopties'), 
    );  
    $this->db->insert('Aanbiedingen', $aanbdata); 

    $this->addimages($image_data, $this->db->insert_id()); 

    $catid = $this->input->post('categorie'); 
    $bedrijfid = $this->session->userdata('idbedrijven'); 

    $bedrijfaanb = array(
    'idbedrijven' => $bedrijfid, 
    'idaanbiedingen' => $this->session->userdata('aanbiedingid'), 
    'idaanbiedingcat' => $catid 
    ); 

    $this->db->insert('bedrijfaanbiedingen', $bedrijfaanb); 

} 

public function addimages($image_data) 
{ 
    $insert_data = array(
     'fotonaam' => $image_data['file_name'] 
    ); 
    $this->db->insert('fotoaanbiedingen', $insert_data); 


    $fotoid = $this->db->insert_id(); 
    $aanbiedingid = $this->session->userdata('aanbiedingid'); //this does nto work 

    $to_aanbiedingfotos = array(
     'idaanbiedingen' => $aanbiedingid, 
     'idfotoaanbiedingen' => $fotoid 
    ); 

    $this->db->insert('aanbiedingfotos', $to_aanbiedingfotos); 
} 
+1

왜 이것에 대한 세션을 사용 하시겠습니까? –

+0

나는 다른 방법을 모르기 때문에. 어쩌면 내가 다른 것을해야하기 때문에 하루 종일 바쁘다. –

+0

가능한 복제본 http://stackoverflow.com/questions/1985967/codeigniter-activerecord-retrieve-last-insert-id – Konsole

답변

1

당신은 다음과 같이 할 수처럼

:

컨트롤러 :

$aanbdata['Aanbieding'] = $this->input->post('aanbiedingnaam'); 
$aanbdata['Tekst'] = $this->input->post('aanbiedingomschrijving'); 
$aanbdata['Prijs'] = $this->input->post('aanbiedingprijs'); 
$aanbdata['Conditie'] = $this->input->post('aanbiedingconditie'); 
$aanbdata['prijssoort'] = $this->input->post('prijsopties'); 

$last_id = $this->model_name->add($aanbdata); //change model_name with your model name 
$this->session->set_userdata('name', $last_id); 

모델 :

function add($data) { 
    $this->db->insert('Aanbiedingen', $data); 
    return $this->db->insert_id(); 
} 
+0

내 모델을 추가 했으므로 볼 수 있습니다. –

+0

남자, 코드에서 대량 작업을 수행했습니다. 그러나 나는 이것을 보았다고 생각한다 : $ this-> addimages ($ image_data, $ this-> db-> insert_id()); 두 개의 매개 변수와 public function addimages ($ image_data)는 하나뿐입니다. –

+1

어제 너무 힘들어서 ID를 컨트롤러로 반환하여 해결했습니다. 고마워 :) –

0

이 모델 함수에 매개 변수로 INSERT_ID주세요.

진지하게, 이것은 매우 어리석은 대답입니다. 그러나 나는 당신을 다르게 도울 방법을 정말로 모른다. 삽입 한 직후 "다른 모델 기능"이라고 부르는 것을 어떻게 막을 수 있습니까?

$aanbdata = array(
    'Aanbieding' => $this->input->post('aanbiedingnaam'), 
    'Tekst' => $this->input->post('aanbiedingomschrijving'), 
    'Prijs' => $this->input->post('aanbiedingprijs'), 
    'Conditie' => $this->input->post('aanbiedingconditie'), 
    'prijssoort' => $this->input->post('prijsopties'), 
);  
$this->db->insert('Aanbiedingen', $aanbdata); 
$this->the_other_model->the_other_function($this->db->insert_id()); 
+0

다른 모델 함수에서 insert_id를 어떻게 호출합니까? 또 다른 삽입 문이 있기 때문에 –

+0

왜 그렇게하고 싶습니까? 다른 모델은이 모델의 삽입과 관련이 없으므로 다른 모델에서 'insert_id()'를 호출해야하는 이유는 무엇입니까? 'insert_id()'는 마지막으로 삽입 한 ID를 돌려주기 때문에 insert() 바로 다음에 즉시 호출합니다. – mgrueter

+0

다른 모델이 아닙니다. 내 모델의 또 다른 기능. 내 질문에 두 가지를 모두 더할 것이므로 분명하다. –

관련 문제