Я хотел бы сохранить DocumentSet, возвращенный из Model::find(), в memcached. Однако я получаю MongoException ниже, когда пытаюсь работать с результатами после их извлечения из кеша. В частности, при использовании foreach исключение возникает при вызове if ($this->_resource->hasNext())
в строке 63 файла \data\source\mongo_db\Result.php.
Исключение Монго
Объект MongoCursor не был правильно инициализирован его конструктором
Я могу понять, почему это так.
Мой вопрос в том, есть ли способ предварительно заполнить Model::find() или создать свой собственный DocumentSet, чтобы я мог работать с данными? Обычно я просто преобразовывал его в массив и сохранял в кеше. Однако мне нужен доступ к некоторым написанным мной методам модели (например, Customer::fullName()).
Обновление: я нашел небольшое обходное решение, которое нормально, но не очень хорошо. Я сохраняю результаты Model::find() в виде массива в кеше $result->to('array')
. Затем, после извлечения, я перебираю $results и заполняю новый массив Model::create($result, array("exists" => true)
для каждого $result;