2014-03-29 3 views
1

composite Primary Key를 사용하여 테이블을 만들었지 만, cakephp에서 무결성 제약 조건 위반 오류를 제공하는 편집 중입니다.cakephp의 무결성 제약 조건 위반

무결성 제약 조건 위반 : 모델의 복합 기본 키 데이터

답변

1

무결성 제약 조건 위반이 데이터베이스에 고유 한 값의 중복을 저장하려는 뜻을 저장하는 동안 1062 중복 항목. 기본 키는 고유해야합니다.

데이터베이스의 기본 키 필드가 자동 증가로 설정되어 있습니까? 그렇지 않으면 문제가 될 수 있습니다.

그렇지 않으면 레코드를 삽입 할 때 PK 값이 0 인 행을 삽입 할 것입니다. 그런 다음 다른 레코드를 삽입하려고하면 PK가 0 인 다른 행을 삽입하려고 시도하므로 고유하지 않습니다. 무결성 제약 조건 위반을 던지기.

그러나

당신은 당신이 편집을하고 있다는 것을 언급했다. 편집을 수행하는 경우 편집 된 행의 기본 키를 데이터베이스에 저장할 때이를 전달하지 않으므로 cake는 CREATE 대신 다른 중복 행 ID를 생성하려고 시도합니다.

이 수행해야합니다 : 반대로

$this->Model->id = $id; // Where $id is the Primary Key of the row being edited. 

을, 당신은 또한이 작업을 수행 할 수 있습니다

$data['Model']['id'] = $id; 
$this->Model->save($data); 

당신은 하나가 당신의 편집 양식에 숨겨진 필드로 저장하여 $ ID를 캡처 할 수 있습니다 또는 액션에 전달 된 URL 매개 변수로 전달할 수 있습니다.

관련 문제