CakePHP 3: Кэширование объекта базы данных в компоненте

я пытаюсь сохранить объект базы данных из (плагин) составная часть в кэш 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:
Ошибка: вы не можете сериализовать или десериализовать экземпляры PDO

Извините, если я просто что-то делаю не так, я просто переключился с Cake2 на Cake3 и ничего не смог найти в документации.

Спасибо за любые клеи!

1

Решение

find Функция не возвращает результаты, она возвращает объект запроса, который можно использовать для получения результатов. призвание toArray при этом будут извлечены все сущности и предоставлено то, что вы можете кэшировать. (Это может сбить с толку, так как toArray также используется для преобразования сущностей в массивы в других ситуациях.)

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector