2014-03-31 3 views
0

그래서 두 필드가 동일하고 각 필드 자체가 아닌지 확인해야합니다. 그 뜻은 :CakePHP 고유 한 화합물 필드 검증 (각 필드는 아니지만 전체적으로)

id (auto increment) | field_1 | field_2 
------------------------------------------ 
      1   | 1  | 1 

null,1,1을 삽입하면 오류가 표시됩니다. 하지만 내가 가서 null,1,2 그것을 아무 문제없이 삽입합니다.

결론적으로 전체 (field_1, field_2)는 고유합니다 (복합 기본 키로도 알려짐).

모델에서 어떻게 확인할 수 있습니까?

편집 : 내가이 시도 : Validation rule for a composite unique index (non-primary)를,하지만 난 null,1,2를 갈 경우는, 삽입 이미 테이블

+0

, http://www.dereuromark.de/2011/10/07/maximum-power-for-your-validation ([여기]를 참조 -rules /). – mark

답변

-1

모델에서이 사용자 정의 유효성 검사 기능을 사용해보십시오.

public function compositUniqueKey($data){ 

if(isset($this->data[$this->alias]['field1']) && isset($this->data[$this->alias]['field1'])){ 
    $check = $this->find('first', array(
             'conditions' => array(
              'field1' => $this->data[$this->alias]['field1'], 
              'field2' => $this->data[$this->alias]['field2'] 
             ) 
            ) 
           ); 
    if(!empty($check)){ 
     return false; 
    } 
    return true; 

}else{ 
    return false; 
} 

} 내가 그 내 "validateUnique"를 사용

1

Model::isUnique()은 사용할 수 있고 이미 CakePHP 코어에서 구현되는 규칙입니다.

반환 거짓 어떤 필드를 통과하면 일치하는 (기본적으로 모든 $ 경우 또는 = false)를 자신의 일치하는 값.

isUnique(array('field1', 'field2'), false)); 

공지 거짓 번째 인수가 false로 설정되지 않은 경우 사용 또는 대신 다음 있기 때문에 당신이 그것을 원하는 것처럼, 그것은 작동하지 않습니다.

+0

http://book.cakephp.org/2.0/en/models/data-validation.html 해당 함수가 매개 변수를 전혀받지 못한다는 것을 언급하지 않았습니다. –

+0

API 설명서에 나와 있습니다. http://api.cakephp.org/2.4/source-class-Model.html#3249-3291 책을 수정해도 누구나 변경할 수 있습니다. – burzum