2012-07-15 86 views
0

我有一個名爲用戶有一個字段的MySQL表:用戶名,密碼,電子郵件 我有控制器/行動像這樣'用戶/更新'添加新用戶和'user/update/id/{ user_id}' 我有兩個控制器相同的Zend_Form。對於增加新的用戶,我已經檢查用戶名是否已存在或不使用下面的代碼:在zend框架中添加自定義驗證

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

這種運作良好,當添加新用戶,但編輯用戶時,甚至當用戶離開的用戶名字段它是,我得到用戶名已存在的錯誤。 是他們驗證Zend提供類似於Db_NoRecordExists編輯該字段。 在編輯的情況下,我想查詢,如:

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

我怎麼能這樣做呢?

回答

0

Zend_Validate_Db_NoRecordExists有這種情況的排除選項:

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

您可以在SQL查詢轉換爲Zend_Db_Select對象

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


$validator = new Zend_Validate_Db_NoRecordExists($select);