Cake\Database\TypeFactory::build()的返回值必须实现接口Cake\Database\TypeInterface,App\Database\Type\CryptedType的实例

问题描述 投票:0回答:3

升级到 cakephp 4 后,当我尝试执行任何查询时出现此错误:

Cake\Database\TypeFactory::build()的返回值必须实现接口Cake\Database\TypeInterface,返回App\Database\Type\CryptedType的实例

cakephp cakephp-4.x
3个回答
1
投票

该错误表明您的自定义数据库类型类

\App\Database\Type\CryptedType
未实现所需的接口
\Cake\Database\TypeInterface

从 CakePHP 4.0 开始,数据库类型类不应再扩展

\Cake\Database\Type
,它已被弃用,并将在 5.x 中完全删除。目前,
\Cake\Database\Type
\Cake\Database\TypeFactory
的别名,它实现该接口。

您的自定义类型类现在应该扩展

\Cake\Database\Type\BaseType
,或者直接实现接口。

另请参阅


0
投票

检查您的 boostrap.php 升级后可能正在使用旧类型

Type::build('time');
Type::build('timestamp');

Cake\I18n\Date::setToStringFormat('dd/MM/yyyy');
Cake\I18n\FrozenDate::setToStringFormat('dd/MM/yyyy');


Type::build('date')
    ->useLocaleParser()
    ->setLocaleFormat('dd/MM/yyyy');

Type::build('datetime')
    ->useLocaleParser()
    ->setLocaleFormat('dd/MM/yyyy HH:mm:ss');

-1
投票

尝试清除缓存

bin/cake cache clear_all
© www.soinside.com 2019 - 2024. All rights reserved.