Решение моего вопроса:
$currentPage = isset( Решение моего вопроса:
[110]GET['page']) ? (int) Решение моего вопроса:
[110]GET['page'] : 1;
$companys = Cache::remember('companys-'.$currentPage, 30, function () {
return Company::with(['comments' => function ($query) {
$query->where('status', '=', 'done');
}])->withCount('comments')->has('comments')->inRandomOrder()->paginate(8);
});
Не использовать ByteArrayOutputStream.toString()
- вместо этого, используйте toByteArray()
и base64-закодируйте это двоичные данные для преобразования его в строку, не теряя информацию.
Я сильно подозреваю, что это - основная проблема - что Вы теряли данные после сериализации. Необходимо, вероятно, также закрыть или по крайней мере сбросить ObjectOutputStream
. Я не знаю бесцеремонно, делает ли это на самом деле что-нибудь в этом случае, но это, казалось бы, было бы хорошей идеей.
Я не полагаю, что существует любая поддержка base64 непосредственно в Java (в общедоступном классе, так или иначе), но существуют различные сторонние библиотеки, которыми можно пользоваться, такие как тот в библиотеке Apache Commons Codec.
Вы попытались переопределить это поведение путем объявления собственного serialVersionUID в пользовательском классе?
У Вас есть определенная причина того, чтобы сделать дополнительный шаг сериализации через строку? Обычно Вы просто десериализовали бы через ObjectOutputStream.