2012-07-15 1 views
0

나는 사용자 이름 필드, 사용자 이름, 패스워드, 이메일을 가진 mysql 테이블을 가지고있다. 새로운 사용자를 추가하기위한 'user/update'와 같은 컨트롤러/액션이있다. 'user/update/id/user_id} ' 두 제어기 모두에 대해 동일한 Zend_Form이 있습니다. 새로운 사용자를 추가, 나는 사용자 이름이 이미 존재 여부를 확인했습니다 또는 코드 아래 사용하지 : 사용자가 편집 할 때 사용자가 같은 사용자 이름 필드 잎에도,젠드 프레임 워크에서 사용자 정의 유효성 검사 추가하기

$username->addValidator('Db_NoRecordExists', true, array('table' => 'user', 'field' => 'username')); 

이 새로운 사용자를 추가 할 때 잘 작동하지만, 그것은, 나는 이미 username 오류가 발생합니다. zend가 필드를 편집하기 위해 Db_NoRecordExists와 유사한 기능을 제공하는지 확인합니다. 수정하는 경우 다음과 같은 검색어를 원합니다.

SELECT COUNT(*) FROM users WHERE username='$username' AND id!=$update_id 

어떻게하면됩니까?

$validator = new Zend_Validate_Db_NoRecordExists(
    array(
     'table' => 'users', 
     'field' => 'username', 
     'exclude' => array(
      'field' => 'id', 
      'value' => $user_id 
     ) 
    ) 
); 

답변

1

당신은

$select = Zend_Db_Table::getDefaultAdapter()->select()->from('users')->where('username =?',$username) 
                    ->where('id != ?',$update_id); 


$validator = new Zend_Validate_Db_NoRecordExists($select); 
Zend_Db_Select

로 SQL 쿼리를 변환 할 수 있습니다