<?php namespace App\Casts; use Illuminate\Contracts\Database\Eloquent\CastsAttributes; use Illuminate\Database\Eloquent\Model; class PostgresBytea implements CastsAttributes { /** * Cast the given value. * * @param array<string, mixed> $attributes */ public function get(Model $model, string $key, mixed $value, array $attributes): mixed { // For stream resources, we need to fseek in case we've already read it. if (is_resource($value)) { rewind($value); $value = stream_get_contents($value); } return hex2bin($value); } /** * Prepare the given value for storage. * * @param array<string, mixed> $attributes */ public function set(Model $model, string $key, mixed $value, array $attributes): mixed { return bin2hex($value); } }