2012-09-21 37 views
0

我的用戶表具有以下列和數據。zf2中存在記錄,條款爲

id |名稱| is_deleted

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

1 | dinu | 1

2 | dddd | 0

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

我使用以下代碼來檢查用戶是否在編輯用戶的is_deleted。現在我想用is_deleted檢查用戶行。我使用排除檢查當前用戶ID。

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

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

} 

standed驗證文檔具有以下代碼。但我無法使用它。

$email  = '[email protected]'; 
$clause = $db->quoteInto('email = ?', $email); 
$validator = new Zend\Validator\Db\RecordExists(
    array(
     'table' => 'users', 
     'field' => 'username', 
     'exclude' => $clause 
    ) 
); 

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

回答

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

+0

感謝薩姆重播。我已經在編輯用戶中使用排除檢查用戶標識。其實我想知道如何使用從句。 –

+0

同樣的問題我得到檢查複製多個字段。如果有人知道如何使用Validator RecordExists來實現這一點。 –

0

您還可以在Zendframework 2 Include Records validator中創建自定義驗證器。 只包含那些記錄來驗證哪些沒有被刪除。

我已經創建了一個自定義驗證器oposite排除,這是包括。

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

} 

} 



?> 
4

我認爲ZF2驗證類手冊關於子句的部分已經過時。在ZF2輾轉

quoteInto()方法

不過,我得到基於報價-DB驗證過濾器來工作..

您可以使用 「其中」 表達爲字符串,像這樣:

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

..或使用上面提到的關聯數組。

然後:

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