Zend framework2 ZF2 Db\RecordExists-检查其他列

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@

我对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@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";
    }
}