From 60d17ea297a9fdd6a4c8e804ee052d0254373c65 Mon Sep 17 00:00:00 2001 From: Deon George Date: Thu, 10 Aug 2023 11:08:15 +1000 Subject: [PATCH] With some column types, our attribute is a resource --- app/Casts/CompressedString.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/Casts/CompressedString.php b/app/Casts/CompressedString.php index 6480c3a..6089640 100644 --- a/app/Casts/CompressedString.php +++ b/app/Casts/CompressedString.php @@ -10,14 +10,24 @@ class CompressedString implements CastsAttributes /** * Cast the given value. * + * For postgresl bytea columns the value is a resource stream + * * @param Model $model * @param string $key * @param mixed $value * @param array $attributes * @return string */ - public function get($model,string $key,$value,array $attributes): string + public function get($model,string $key,mixed $value,array $attributes): string { + // For stream resources, we to fseek in case we've already read it. + if (is_resource($value)) + fseek($value,0); + + $value = is_resource($value) + ? stream_get_contents($value) + : $value; + return $value ? zstd_uncompress(base64_decode($value)) : ''; }