Validation 插入数据时忽略重复的空字段
我在SendersTable.php中有这段代码:Validation 插入数据时忽略重复的空字段,validation,cakephp,nullable,unique-constraint,cakephp-4.x,Validation,Cakephp,Nullable,Unique Constraint,Cakephp 4.x,我在SendersTable.php中有这段代码: public function validationDefault(Validator $validator): Validator { .... $validator ->scalar('public_key') ->maxLength('public_key', 1024) ->allowEmptyString('public_key') -&
public function validationDefault(Validator $validator): Validator
{
....
$validator
->scalar('public_key')
->maxLength('public_key', 1024)
->allowEmptyString('public_key')
->add('public_key', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']);
....
}
然后,我向表中添加了一个行为,它成功地将'
替换为NULL
尝试向表中添加新行时失败,因为validateUnique
正在运行以下命令:
SELECT 1 AS existing FROM senders Senders WHERE (Senders.public_key) IS NULL LIMIT 1
这就是问题所在。已经有行public\u key
为NULL
,并且有一个唯一的public\u key
索引。由于MariaDB在唯一索引中支持多个NULL
,因此索引是正常的
如何覆盖validateUnique
的功能,使其在条件为NULL
时不运行SELECT
命令
我正在运行CakePHP4.1