1

我正在尝试将(插件)组件中的数据库对象保存到 CakePHP 缓存中。

这有效(注意 toArray() )

        $domains = Cache::read('domains', 'long');

        if ($domains === false) {

            $domainsTable = TableRegistry::get('DomainManager.Domains');
            $domains = $domainsTable->find('all', ['fields' => ['id', 'name']]);
            $domains = $domains->toArray();

            Cache::write('domains', $domains, 'long');
            return $domains;
        }

但这失败了:

        $domains = Cache::read('domains', 'long');

        if ($domains === false) {

        $domainsTable = TableRegistry::get('DomainManager.Domains');
        $domains = $domainsTable->find('all', ['fields' => ['id', 'name']]);

        Cache::write('domains', $domains, 'long');
        return $domains;
    }

CakePHP 给出的错误是 Error: You cannot serialize or unserialize PDO instances

抱歉,如果我做错了什么,我刚从 Cake2 切换到 Cake3,在文档中找不到任何东西。

谢谢你的胶水!

4

1 回答 1

1

find函数不返回结果,它返回一个可用于获取结果的查询对象。调用toArray它将检索所有实体并为您提供可以缓存的内容。(它可能会令人困惑,因为toArray它也用于在其他情况下将实体转换为数组。)

于 2016-01-25T18:31:11.627 回答