Zend framework2 ZF2 Db\RecordExists-检查其他列
我对ZF2 RecordExists方法有问题。我将解释我的问题案例/场景 表:用户 列:id、emailaddress、网站名Zend framework2 ZF2 Db\RecordExists-检查其他列,zend-framework2,Zend Framework2,我对ZF2 RecordExists方法有问题。我将解释我的问题案例/场景 表:用户 列:id、emailaddress、网站名 Sample Records: 1, user1@email.com, 1site.com 2, user2@email.com, 1site.com 3, user3@email.com, 2site.com 4, user4@email.com, 2site.com 5, user5@
Sample Records:
1, user1@email.com, 1site.com
2, user2@email.com, 1site.com
3, user3@email.com, 2site.com
4, user4@email.com, 2site.com
5, user5@email.com, 1site.com
6, user6@email.com, 3site.com
7, user7@email.com, 4site.com
我将以下代码段用于已存在的条件
//Check that the email address exists in the database
$validator = new Zend\Validator\Db\RecordExists(
array(
'table' => 'users',
'field' => 'emailaddress'
)
);
if ($validator->isValid($emailaddress)) {
// email address appears to be valid
} else {
// email address is invalid; print the reasons
foreach ($validator->getMessages() as $message) {
echo "$message\n";
}
}
根据上面的片段,user1@email.com无法再次注册。因为,该电子邮件地址存在于表中。
但是,我想在2site.com注册。因为,user1@email.com位于1site.com。
所以user1@email.com无法再次向1site.com注册。但是user1@email.com可以在2site.com注册。
怎么可能呢?让我知道你的建议。有两种方法 先用方法 其中排除websitename字段值的记录 Zend\Validator\Db\RecordExists和Zend\Validator\Db\NoRecordExists 还提供了一种测试数据库的方法,不包括数据库的一部分 表,通过将where子句作为字符串或数组提供 使用“字段”和“值”键 第二,编写自己的自定义validtor。 您需要扩展类并根据类的方向创建自己的类。在您自己的cust类中,您可以定义自己的查询并将其传递给isValid函数 我已经创建了一个要排除的自定义验证器站点,它是include。 include是保留字,现在确定它是否有效。 更多关于这个的阅读资料 请查看现有validtor以创建您自己的自定义验证器
有两种方法可以做到这一点 先用方法 其中排除websitename字段值的记录 Zend\Validator\Db\RecordExists和Zend\Validator\Db\NoRecordExists 还提供了一种测试数据库的方法,不包括数据库的一部分 表,通过将where子句作为字符串或数组提供 使用“字段”和“值”键 第二,编写自己的自定义validtor。 您需要扩展类并根据类的方向创建自己的类。在您自己的cust类中,您可以定义自己的查询并将其传递给isValid函数 我已经创建了一个要排除的自定义验证器站点,它是include。 include是保留字,现在确定它是否有效。 更多关于这个的阅读资料 请查看现有validtor以创建您自己的自定义验证器
$email = 'user@example.com';
$clause = $db->quoteInto('email = ?', $email);
$validator = new Zend\Validator\Db\RecordExists(
array(
'table' => 'users',
'field' => 'username',
'exclude' => $clause
)
);
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";
}
}