2011-12-09 17 views
3

Zend_Validate_Db_NoRecordExistsは、レコードを挿入する前に確認するために、下のリンクに詳しく記載されています。 Zend_Validate_Db_NoRecordExistsにWHERE句を追加する

私はレコードを除外するためにWHERE句を追加され、次何をする必要があるか、基本的なコードでは問題がないとそれが正常に動作して持っているところフィールドrecordDeleteここで= 1

Zebd_Validate_Db_NoRecordExists

あなたはあなたがしていることの独自のバージョンを作成しようとすることができ

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

おかげ

+0

あなたはあなたのコードの一部を投稿することができますか? 'Zend_Validate_Db_NoRecordExists'を使っているところのコードと同じです。 –

+0

もちろんもちろん $ validator = new Zend_Validate_Db_NoRecordExists($ options); $ form-> getElement( 'productSTOCKCODE') - > addValidator($バリデータ); 残りのコードは、元のリンクで詳述されているクラスです。 – jjmu15

答えて

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 
    ); 
} 

ORあなたがそれを使用しているところはどこでもあなただけのコンストラクタに沿って$excludeのparamを渡すことができます。

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