簡體   English   中英

帶子句的zf2中存在記錄

[英]Record exist in zf2 with clause

我的用戶表具有以下列和數據。

id | 名稱| is_deleted

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

1 | dinu | 1個

2 | dddd | 0

我想檢查未刪除的用戶是否存在。 我該怎么做?

我將以下代碼用於檢查用戶,而在編輯用戶中則刪除了is_deleted。 現在,我要使用is_deleted檢查用戶行。 我使用排除檢查當前用戶ID。

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

標准的驗證文件具有以下代碼。 但是我不能使用它。

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

什么是$ db? 它不是適配器。 我試試看 請再幫我一次。

我認為ZF2驗證類手冊中有關子句的部分已經過時。

在ZF2中刪除了quoteInto()方法

但是,我可以使用基於報價的Db驗證過濾器。

您可以將“ where”表達式用作字符串,如下所示:

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

..或使用上述關聯數組。

接着:

        'validators' => array(
            array(
                'name'    => 'Db\NoRecordExists',
                'options' => array(
                    'adapter' => $dbAdapter,
                    'table' => $tableName,
                    'field' => $fieldName,
                    'exclude' => $clause,
                ),
            ),
        ),

好的,我也不知道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

您還可以在Zendframework 2 包含記錄驗證器中創建自定義驗證 僅包括那些未刪除的驗證記錄。

我已經創建了一個包含在對面的自定義驗證器。

<?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";

}

}



?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM