1

こんにちは。3つのフィールドの組み合わせがであるテーブルがありますunique。この組み合わせに重複のチェックを入れたいと思います。テーブルは次のようになります

ここに画像の説明を入力してください

単一のフィールドを検証する方法は知っていますが、組み合わせを検証する方法はわかりません。1つのフィールドを検証するには、次の関数を使用します

public function isValid($data) {

    // Options for name field validation
    $options = array(
        'adapter' => Zend_Db_Table::getDefaultAdapter(),
        'table' => 'currencies',
        'field' => 'name',
         'message'=> ('this currency name already exists in our DB'),
    );



    // Exclude if a id is given (edit action)
    if (isset($data['id'])) {
        $options['exclude'] = array('field' => 'id', 'value' => $data['id']);
    }



    // Validate that name  is not already in use
    $this->getElement('name')
            ->addValidator('Db_NoRecordExists', false, $options

    );



    return parent::isValid($data);
}

結合されたフィールドでの重複を検証する方法を教えてくれる団体はありますか?

4

2 に答える 2

1

私の知る限り、これにバリデーターを使用する準備はできていません。独自に作成するか、3つの条件(各フィールドに1つ)を使用してSQLクエリでチェックを行う必要があります。

于 2012-10-21T06:06:13.147 に答える
0

zendフォームのname要素に検証を適用する必要があります。名前フィールドに検証を追加するためのコードは次のとおりです。

$name->addValidator(
    'Db_NoRecordExists', 
    true, 
    array(
        'table' => 'currencies',
        'field' => 'name',
        'messages' => array( "recordFound" => "This Currency Name already exists in our DB") ,

    )
);

そして、requiredtrueを設定する必要があります。

于 2013-02-13T09:38:13.243 に答える