我正在尝试使用Laravel 4及其Eloquent ORM将二进制数据插入到PostgreSQL数据库中。我在迁移中有以下内容:
Schema::create('DataBlobs', function($table) {
$table->increments('Id');
$table->binary('Data');
});
运行迁移后,我已经验证它会创建一个PostgreSQL BYTEA列。大!所以我把它放在数据库播种功能中:
DB::table('DataBlobs')->delete();
// $d contains the binary data I want to insert into the database.
$d = base64_decode($raw_b64data);
$i = new DataBlob();
$i->Data = $d;
$i->save();
然而,当我运行播种机时,我收到以下错误:
SQLSTATE [22021]:字符不在保留曲目中:7错误:编码“UTF8”的无效字节序列:0x89(SQL:插入“DataBlobs”(“数据”)值(我的控制台尝试的二进制乱码)渲染)
我已经使用var_dump和bin2hex验证了$ d实际上是一个包含我想要的数据的二进制字符串,但是从错误中看,Laravel看起来像是试图将二进制数据作为UTF8字符串插入而不是二进制数据。我一直在谷歌搜索一天,我找不到任何如何使用Laravel将二进制数据插入数据库的示例。任何帮助将不胜感激!
答案 0 :(得分:0)
你可以使用 DB :: withoutpared($ code); 要么 DB ::插入件()