Я пытаюсь сохранить объект базы данных из (0) плагина компонента в CakePHP Cache.CakePHP 3: Кэширование объекта базы данных в компоненте
Это работает (обратите внимание на 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 является Ошибка: Вы не можете сериализовать или десериализации экземпляры PDO
Извините, если я просто делаю что-то неправильно, я просто переключился m Cake2 to Cake3 и ничего не нашел в Документации.
Спасибо за любые клеи!
Привет, Грег, спасибо за ваш ответ. Но не содержит ли CakePHP документация (http://book.cakephp.org/3.0/en/core-libraries/caching.html#writing-to-a-cache) «Cache :: write() может хранить любой тип объекта и идеально подходит для хранения результатов поиска моделей « или это означает, что в кеш могут храниться только массивы? Возможно, я просто неправильно понимаю документацию по этому вопросу. – Kneecht
«Результаты» обычно означают строки, возвращаемые базой данных. 'find' не возвращает строки, он возвращает объект запроса, который может использоваться для извлечения строк различными способами. Вы можете хранить много вещей в кеше, но объекты запросов не являются одним из них. –
Хорошо, спасибо! :-) Похоже, я должен еще раз взглянуть на новый ORM. – Kneecht