将WHERE子句添加到Zend_Validate_Db_NoRecordExists

3

我正在使用下面链接中详细介绍的Zend_Validate_Db_NoRecordExists来在插入记录之前检查记录是否存在。

基本代码没有问题,也已经可以正常工作,接下来我需要添加一个WHERE子句来排除字段recordDelete = 1的记录。

Zebd_Validate_Db_NoRecordExists

下面是我正在使用此代码的一部分:

$validator = new Zend_Validate_Db_NoRecordExists($options);
$form->getElement('productSTOCKCODE')->addValidator($validator);

谢谢


你能发一些代码吗?比如你在哪里使用 Zend_Validate_Db_NoRecordExists 的代码。 - Yes Barry
$validator = new Zend_Validate_Db_NoRecordExists($options); $form->getElement('productSTOCKCODE')->addValidator($validator);代码的其余部分详见原链接中的类。 - jjmu15
2个回答

4
$validate = new Zend_Validate_Db_RecordExists (array (
    'table' => 'orders',
    'field' => 'id',
    'exclude' => 'recordDelete = 1'
));

$result = $validate->isValid ('000489FS1qT81XR4GWuV');

1
你可以尝试创建自己的版本,并设置$_exclude成员变量。

(未经测试)

class My_Validate_Db_NoRecordExists 
    extends Zend_Validate_Db_NoRecordExists // notice what were extending here
{
    protected $_exclude = array(
        'field' => 'recordDelete',
        'value' => 1
    );
}

或者你可以在使用它的地方将$exclude参数传递给构造函数:

$options = array(
    'table' => $yourTable, 
    'field' => $yourField, 
    'exclude' => array(           // <- set exclude here
        'field' => 'recordDelete',
        'value' => 1
    )
);
$dbValidator = new Zend_Validate_Db_NoRecordExists($options);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接