Laravel — с помощью поля postgre bytea blob

Я использую PostgreSQL для установки Laravel. Таблица имеет поле типа bytea, которое используется для хранения двоичных данных (содержимое файла base64_encoded).

Когда я использую Eloquent для извлечения таблицы, я получаю переменную типа ресурса, возвращаемую в этом поле.

Как я могу получить это как строку?

$raw = Media::where('id','=',$id)->first();
$raw->file_data = base64_decode($raw->file_data);   // doesn't work

4

Решение

Поскольку автор этого вопроса не опубликовал детали ответа, я опубликую свои выводы здесь.

Поскольку возвращаемое поле является дескриптором потока, вы можете использовать stream_get_contents Функция для чтения значения в строку, затем вы можете использовать pg_unescape_bytea, чтобы получить фактическое значение данных байта. Наконец, используйте функцию htmlspecialchars, если вы хотите отобразить данные байты в HTML.

Пример кода:

$my_bytea = stream_get_contents($resource);
$my_string = pg_unescape_bytea($my_bytea);
$html_data = htmlspecialchars($my_string);
5

Другие решения

Ответ состоял в том, чтобы использовать stream_get_contents в потоке. Дух.

0

По вопросам рекламы [email protected]