5

LaravelのインストールでPostgreSQLを使用しています。テーブルには、バイナリデータ(base64_encodedファイルの内容)を格納するために使用されているbyteaタイプフィールドがあります。

Eloquentを使用してテーブルを取得すると、このフィールドにリソースタイプ変数が返されます。

これを文字列として取得するにはどうすればよいですか?

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

2 に答える 2

7

この質問の作者は回答に詳細を投稿しなかったので、ここに私の調査結果を投稿します。

返されるフィールドはストリームへのハンドルであるため、stream_get_contents関数を使用して値を文字列に読み込むことができるため、pg_unescape_byteaを使用してbyteaデータの実際の値を取得できます。最後に、byteaデータをHTMLで表示する場合は、htmlspecialchars関数を使用します。

コード例:

$my_bytea = stream_get_contents($resource);
$my_string = pg_unescape_bytea($my_bytea);
$html_data = htmlspecialchars($my_string);
于 2015-11-03T12:30:54.097 に答える
1

答えは、ストリームでstream_get_contentsを使用することでした。当たり前。

于 2012-07-04T14:47:37.060 に答える