У меня есть приложение на Symfony 7. В этом приложении я делаю внешние вызовы API, для которых у меня определен абстрактный класс HttpClient. В этом классе я использую клиент guzzle для обработки запроса. У меня есть объект для сохранения информации, связанной с внешними вызовами, и я использую Doctrine для взаимодействия с базой данных. Фрагмент объекта приведен ниже:
Код: Выделить всё
#[ORM\Column(name: 'request',type: 'json')]
private array $request;
#[ORM\Column(name: 'response', type: 'json', nullable: true)]
private ?array $response = null;
Код: Выделить всё
$log = [
'request' => $this->serializer->normalize($request),
];
try {
$response = $this->client->request(
$request->getRequestMethod(),
$request->getUri(),
$this->prepareGuzzleOptions($request)
);
$log['response'] = $this->serializer->decode((string) $response->getBody()->getContents(), 'json');
} catch (GuzzleException $e) {
$log['response'] = $this->serializer->normalize([$e->getMessage(), $e->getTraceAsString()]);
} catch (\Throwable $e) {
$log['response'] = ["exceptionMessage" => $e->getMessage()];
throw $e;
} finally {
$log = $this->serializer->denormalize($log, Log::class);
$this->em->persist($apiLog);
$this->em->flush();
$this->em->clear();
}
Из-за места, которое они занимают, я хочу сжать их и сохранить в сжатом виде. Я также хочу иметь возможность распаковать их в инструменте управления базой данных на случай, если мне понадобится устранить какие-либо неполадки.
Предпринятые шаги
Я попробовал изменить тип атрибута как для «blob», так и для «двоичного файла», также пытался поиграть со сжатием запроса, но я не могу преобразовать его в тип «ресурса» и получаю такие ошибки, как: Тип атрибута «запрос» для класса должен быть одним из «ресурс» (дан массив). или Тип атрибута «запрос» для класса должен быть одним из «ресурс» (дана строка).
Я понимаю, в чем проблема, но не могу придумать решение как я могу преобразовать строку в ресурс элегантным и технически значимым способом.
Если потребуется какая-либо дополнительная информация, я с радостью ее предоставлю. Любая помощь будет оценена по достоинству.
Подробнее здесь: https://stackoverflow.com/questions/791 ... -symfony-7