[英]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.