Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 验证唯一使用范围_Php_Cakephp 3.0 - Fatal编程技术网

Php 验证唯一使用范围

Php 验证唯一使用范围,php,cakephp-3.0,Php,Cakephp 3.0,数据库中的adm_users表包含以下两行: | id | username | club_id | |----|------------------|---------| | 1 | daniel@gmail.com | 1 | | 2 | jhon@gmail.com | 1 | 我的逻辑是,该电子邮件仅对同一俱乐部id是唯一的,以下是验证代码: ->add('username', 'unique', [ 'rule' =>

数据库中的adm_users表包含以下两行:

| id | username         | club_id |
|----|------------------|---------|
| 1  | daniel@gmail.com | 1       |
| 2  | jhon@gmail.com   | 1       |
我的逻辑是,该电子邮件仅对同一俱乐部id是唯一的,以下是验证代码:

->add('username', 'unique', [
    'rule' => ['validateUnique',
        ['scope' => 'club_id']
    ],
    'provider' => 'table'
])
问题是,规则允许改变daniel@gmail.com到jhon@gmail.com,他们有相同的俱乐部Id,所以这不应该发生

下面是SQL日志的结果:


规则方法validateUnique对我来说很好,不是吗?生成的查询看起来是什么样的?选择1作为“existing”FROM…?我将unique更改为validateUnique,问题仍然存在。。这是sql日志。。。从adm_users AdmUsers中选择1作为“现有”,其中AdmUsers.username='1joao@gmail.com'而不是AdmUsers.id=15 LIMIT 1looks像规则没有被烧掉一样hey@ndm my bad。。。我做错了什么,我正在寻找一个更好的答案来解释它。他们@ndm现在我有了一个新问题。。我更新了问题。
SELECT 1 AS `existing` FROM adm_users AdmUsers WHERE (AdmUsers.username = 'jhon@gmail.com' AND AdmUsers.club_id = NULL AND NOT (AdmUsers.id = 15)) LIMIT 1