Laravel - 如何使用PostgreSQL中的bytea blob字段

6
我正在 Laravel 安装上使用 PostgreSQL。一张表有一个 bytea 类型的字段,用于存储二进制数据(base64 编码的文件内容)。
当我使用 Eloquent 检索表时,这个字段返回一个资源类型的变量。
如何将其作为字符串检索出来?
$raw = Media::where('id','=',$id)->first();
$raw->file_data = base64_decode($raw->file_data);   // doesn't work

请尝试访问以下链接:https://github.com/jBernavaPrah/eloquent-binary-cast - undefined
2个回答

10

由于提问者没有在答案中发布详细信息,因此我将在此处发布我的发现。

由于返回的字段是一个指向流的句柄,您可以使用stream_get_contents函数将值读入字符串,然后可以使用pg_unescape_bytea获取bytea数据的实际值。最后,如果您希望在HTML中显示bytea数据,请使用htmlspecialchars函数。

示例代码:

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

1
答案是使用 stream_get_contents 函数来处理流。显然啊。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接