0

私のユーザーテーブルには、次の列とデータがあります。

ID | 名前 | is_deleted

##########################

1 | ディヌ | 1

2 | dddd | 0

削除されていないユーザーが存在することを確認したい。どうすればできますか?

編集ユーザーで is_deleted を使用せずにユーザーをチェックするには、次のコードを使用します。ここで、is_deleted を使用してユーザー行を確認したいと思います。現在のユーザーIDの確認にexcludeを使用しています。

$validator = new Zend\Validator\Db\RecordExists(
    array(
        'table'   => 'users',
        'field'   => 'name',
        'exclude' => array(
             'field' => 'id',
             'value' => $id
        )
    )
);

if ($validator->isValid($username)) {

}

スタンディング検証ドキュメントには次のコードがあります。しかし、私はそれを使用することはできません。

$email     = 'user@example.com';
$clause    = $db->quoteInto('email = ?', $email);
$validator = new Zend\Validator\Db\RecordExists(
    array(
        'table'   => 'users',
        'field'   => 'username',
        'exclude' => $clause
    )
);

$db とは? アダプターではありません。やってみる。もう一度助けてください。

4

3 に答える 3

5

ZF2 Validation Classes マニュアルの句に関する部分は古くなっていると思います。

quoteInto()メソッドは ZF2 で削除されました

ただし、引用ベースのデータベース検証フィルターが機能する..

次のように、「where」式を文字列として使用できます。

$clause = "id != $myid AND status != false";

..または上記のように連想配列を使用します。

その後:

        'validators' => array(
            array(
                'name'    => 'Db\NoRecordExists',
                'options' => array(
                    'adapter' => $dbAdapter,
                    'table' => $tableName,
                    'field' => $fieldName,
                    'exclude' => $clause,
                ),
            ),
        ),
于 2013-02-15T14:35:16.860 に答える
1

わかりました、これがZF2にも当てはまるかどうかはわかりませんが、今のところ、これが当てはまると仮定します. ZF1 では、単一のフィールドを除外するオプションがありました。次のことを試してください。

$validator = new Zend\Validator\Db\RecordExists(array(
    'table' => 'users',
    'field' => 'name',
    'exclude' => array(
        'field' => 'is_deleted',
        'value' => 1
    )
));

これは、バリデーターに次のように伝える必要があります。Look for user with name $name but is_deleted 0

于 2012-09-21T14:47:26.120 に答える
0

Zendframework 2インクルード レコード バリデーター でカスタム バリデーターを作成することもできます。削除されていない検証対象のレコードのみを含めます。

私はExcludeとは反対に、includeであるCustom Validatorを作成しました。

<?php

//Check no other users have the username

$user_id = $user->getId();

$validator = new Zend\Validator\Db\CustomNoRecordExists(

array(

'table' => 'users',

'field' => 'username',

'include' => array(

'field' => 'id',

'value' => $user_id

)

)

);



if ($validator->isValid($username)) {

// username appears to be valid

} else {

// username is invalid; print the reason

$messages = $validator->getMessages();

foreach ($messages as $message) {

echo "$message\n";

}

}



?>
于 2013-01-25T16:17:10.243 に答える