2017-02-13 12 views
0

air_id라는 텍스트 상자가 하나있는 편집 양식의 CakePHP 응용 프로그램을 만들고 있습니다. 내 테이블에서 나는 복합 기본 키로 project_id와 air_id를 사용하고있다. 따라서 air_id를 업데이트하는 동안 고유성의 유효성을 검사해야합니다. 내 테이블 구조는 같다 : 나는 cakephp3.0을 사용하고 내가, 다음 을 범위를 validateUnique 규칙을 사용하고cakephp의 범위와 고유 한 필드를 확인하십시오.

현재
project_id   air_id  
     1   [email protected] 
     1   [email protected] 

내 코드입니다 :

$validator 
     ->add('air_id', [ 
      'unique' => [ 
       'rule' => ['validateUnique', ['scope' => 'project_id']], 
       'provider' => 'table', 
      ] 
]); 

그리고 내 컨트롤러는이

같다
$projectCustomers = $this->ProjectCustomers->newEntity($formData); 

이제는 매번 유효성 확인 메시지를 전합니다. 필요한 것은 [email protected] 값을 [email protected]으로 변경하면 오류가 발생하고 다른 값으로 변경하면 오류가 발생하지 않아야합니다. 유효성 검사에 잘못된 점이 있습니까?

+0

'project_id'에 대해 'air_id'필드를 고유해야한다는 의미입니까? –

+0

"** _ [email protected] 값을 [email protected]_**로 바꿀 때마다 유효성 검사 메시지가 나타납니다."테이블 내용에'1, test1 @ test.com'이 이미 존재합니다. 귀하가 직면하고있는 실제 기술적 문제를 설명하는 적절한 세부 사항으로 질문을 업데이트하십시오. – ndm

+0

@ndm 이제는 매번 유효성 검사 메시지를 표시합니다. 필요한 것은 [email protected] 값을 [email protected]으로 변경하면 오류가 발생하고 다른 값으로 변경하면 오류가 발생하지 않아야합니다. –

답변

0

CakePHP의 고유 필드 규칙 :

우리는 더 나은 수 있습니다 CakePHP의 독특한 필드 규칙이 있습니다 테이블에서

(. 예를 들어 UsersTable.php) :

public function buildRules(RulesChecker $rules) 
{ 
    $rules->add($rules->isUnique(
     ['air_id', 'project_id'], 
     'Your validation error here.' 
    )); 

    return $rules; 
} 

에서을 테이블 상단에는 다음 클래스를 포함하는 것을 잊지 마십시오.

use Cake\ORM\RulesChecker; 

여기 (CakePHP Unique Fields Rules)를 참조하십시오.