【问题标题】:Adding a WHERE clause to Zend_Validate_Db_NoRecordExists向 Zend_Validate_Db_NoRecordExists 添加 WHERE 子句
【发布时间】:2011-12-09 09:58:46
【问题描述】:

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

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

Zebd_Validate_Db_NoRecordExists

这是我正在使用的代码的 sn-p:

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

谢谢

【问题讨论】:

  • 你能发布一些你的代码吗?喜欢您使用的任何地方的代码Zend_Validate_Db_NoRecordExists..
  • 当然 $validator = new Zend_Validate_Db_NoRecordExists($options); $form->getElement('productSTOCKCODE')->addValidator($validator);其余代码是原始链接中详述的类。

标签: sql zend-framework where-clause zend-db


【解决方案1】:
$validate = new Zend_Validate_Db_RecordExists (array (
    'table' => 'orders',
    'field' => 'id',
    'exclude' => 'recordDelete = 1'
));

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

【讨论】:

    【解决方案2】:

    您可以尝试创建自己的版本并设置$_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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多