我有一个名为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
我该怎么做?
答案 0 :(得分: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);
答案 1 :(得分:0)
Zend_Validate_Db_NoRecordExists有一个排除选项:
$validator = new Zend_Validate_Db_NoRecordExists(
array(
'table' => 'users',
'field' => 'username',
'exclude' => array(
'field' => 'id',
'value' => $user_id
)
)
);