I am using PostgreSQL on a Laravel installation. A table has a byte-type field that is being used to store binary data (base64_encoded file contents).
When I use Eloquent to retrieve the table I get a resource type variable being returned in this field.
How can I rather retrieve this as a string?
$raw = Media::where('id','=',$id)->first();
$raw->file_data = base64_decode($raw->file_data); // doesn't work
As the author of this question did not post the details to the answer, I will post my findings here.
As the returned field is a handle to a stream you can use the stream_get_contents function to read the value into a string, you can then use pg_unescape_bytea to get the actual value of the bytea data. Finally use the htmlspecialchars function if you wish to display the bytea data in HTML.
Example code:
$my_bytea = stream_get_contents($resource);
$my_string = pg_unescape_bytea($my_bytea);
$html_data = htmlspecialchars($my_string);