Добавление предложения WHERE в Zend_Validate_Db_NoRecordExists - PullRequest
3 голосов
/ 09 декабря 2011

Я использую Zend_Validate_Db_NoRecordExists, подробно описанный в ссылке ниже, чтобы проверить, существует ли запись перед ее вставкой.

У меня нет проблем с базовым кодом, и он работает нормально. Теперь мне нужно добавить предложение WHERE, чтобы исключить записи, в которых поле recordDelete = 1.

Zebd_Validate_Db_NoRecordExists

Вот фрагмент кода, где я использую это:

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

Спасибо

Ответы [ 2 ]

4 голосов
/ 09 декабря 2011
$validate = new Zend_Validate_Db_RecordExists (array (
    'table' => 'orders',
    'field' => 'id',
    'exclude' => 'recordDelete = 1'
));

$result = $validate->isValid ('000489FS1qT81XR4GWuV');
1 голос
/ 09 декабря 2011

Вы можете попробовать создать свою собственную версию и установить переменную-член $_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);
...