0

我有一个名为 users 的 mysql 表,其中包含字段:用户名、密码、电子邮件我有这样的控制器/操作,用于添加新用户和 'user/update/id/{user_id}' 我有两个控制器相同的 Zend_Form . 为了添加新用户,我使用以下代码检查了用户名是否已经存在:

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

这在添加新用户时效果很好,但在编辑用户时,即使用户离开用户名字段,我也会收到用户名已经存在错误。它们是 zend 为编辑字段提供类似于 Db_NoRecordExists 的验证。在编辑案例中,我想要这样的查询:

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

我怎样才能做到这一点?

4

2 回答 2

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);
于 2012-07-15T03:26:24.713 回答
0

Zend_Validate_Db_NoRecordExists对于这种情况有一个排除选项:

$validator = new Zend_Validate_Db_NoRecordExists(
    array(
        'table' => 'users',
        'field' => 'username',
        'exclude' => array(
            'field' => 'id',
            'value' => $user_id
        )
    )
);
于 2012-07-15T02:39:23.427 回答