2012-07-04 55 views
2

我在Laravel安裝中使用PostgreSQL。一個表有一個bytea類型的字段,用於存儲二進制數據(base64_encoded文件內容)。Laravel - 使用postgre bytea blob字段

當我使用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來獲取bytea數據的實際值。如果你想在HTML中顯示bytea數據,最後使用htmlspecialchars函數。

示例代碼:

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

答案是在流上使用stream_get_contents。咄。

+1

可以擴展嗎?更多代碼。 – menjaraz