Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
Validation 插入数据时忽略重复的空字段_Validation_Cakephp_Nullable_Unique Constraint_Cakephp 4.x - Fatal编程技术网

Validation 插入数据时忽略重复的空字段

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') -&

我在SendersTable.php中有这段代码:

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