2013-02-01 5 views
1

나는 testimonial이라는 테이블이 있습니다. 테이블 구조는 다음과 같습니다.codeigniter 여러 테이블에 삽입

enter image description here

그러나 테이블이 정규화 된 것 같다니까. 나는 무언가를 좋아할 것이다.

trip_testimonial

----------------------------------- 
id 
trip_id 
status 
----------------------------------- 

그리고

증명서

---------------------------------- 
    id 
    name 
    email 
    website 
    message 
    ----------------------------------- 

같은 다른 테이블하지만 어떻게 내가 CodeIgniter의 그들에 데이터를 입력 할. 나는 비슷한 것을 사용했다

function add($data){ 

     $this->db->insert('testimonials', $data); 
     if($this->db->affected_rows()>0){ 
      return TRUE; 
     }else{ 
      return FALSE; 
     } 
    } 

가장 좋은 접근 방법은 무엇입니까 ?? 한 관계 한 단지

testimonial 
----------------------------------- 
id 
name 
email 
website 
message 
date 
status 

추가 기능 함수

function add($data){ 

    $this->db->insert('testimonials', $data); 
    if($this->db->affected_rows()>0){ 
     return TRUE; 
    }else{ 
     return FALSE; 
    } 
} 

미세하다 trip_id 열을 제거하고, 데이터가 삽입 될 수 있도록

+0

귀하의 질문은 불분명하다. 여러 테이블에 삽입 하시겠습니까? trip_testimonial에서 상태 란 무엇입니까? –

+0

상태는 평가를위한 상태 일뿐입니다. 승인을 위해 1을, 보류중인 증명서를 0으로 설정할 수 있습니다. – prakashchhetri

+1

확인 단일 증언에서 여러 차례의 여행이 가능합니까? –

답변

2
[TRIP] 
trip_id 
trip_name 
trip_desc 
.... 

[TESTIMONIAL] 
testimonial_id 
trip_id 
testim_name 
testim_email 
...... 

function add($data){ 

    $dataTrip = array(
    //fill the array the appropriate data 
); 

    //return the last inserted trip_id 
    $lastTripId = $this->myModel->myFuncToAddTrip($dataTrip);  

    $dataTestimonial = array(
    'trip_id' => $lastTripId, 
    'testim_name' => $data['testim_name'], 
    ....... 
); 

    if($this->myModel->myFuncAddTestimonial($dataTestimonial)){ 
    //success 
    }else{ 
    //error 
    } 

} 

적어도 하나의 쿼리가 실패 할 경우 트랜잭션을 사용하여 롤백합니다.많은 평가에

편집 1 여행

1

내 구조 정규화

$data['name']  = 'blah'; 
$data['email']  = '[email protected]'; 
$data['website'] = 'website'; 
$data['message'] = 'message'; 
$data['date']  = date('Y-m-d H:i:s'); 

그리고 테이블 생성시 또는 ALTER를 사용하여 status의 기본값을 0으로 설정하십시오.
하지만 삽입해야 할 때 다른 값으로 하나 이상의 열을 추가 할 수 있습니다.

$data['status']  = 1; 

그리고 당신은 상태

SELECT * FROM testimonial WHERE status = 0 

또는

SELECT * FROM testimonial WHERE status = 1 

업데이트를 선택할 수 있습니다 선택하면 지금은 기능이
를 추가 호출 할 수 있습니다 :이보다 경우라면

너는 이렇게 할 수있다. 증언 테이블

testimonial 
----------------------------------- 
id 
name 
email 
website 
message 
date 
status 
trip_id 

이제 선택 여행 아이디

SELECT id FROM trip_testimonial WHERE status = 0 

그리고 반환 된 ID에 열을 추가하는 추가 기능 함수를 호출 증명서 데이터

$data['name']  = 'blah'; 
$data['email']  = '[email protected]'; 
$data['website'] = 'website'; 
$data['message'] = 'message'; 
$data['date']  = date('Y-m-d H:i:s'); 
$data['trip_id'] = $row->id; 

그리고 지금에 넣어해야

+0

아니요, 하나의 여행은 여러 차례의 증언을 가질 수 있으므로 trip_id는 trip_testimonials의 외래 키입니다. – prakashchhetri

+0

은 제가 게시 한 것과 정확히 똑같습니다. 하지만 내가 원하는 것은 테이블에 정규화하는 것입니다. 질문에 명시하고 코드를 하나의 테이블에 데이터를 삽입하십시오.] – prakashchhetri

관련 문제