Php 验证唯一使用范围
数据库中的adm_users表包含以下两行: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' =>
| 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