如何使用 Laravel 将二进制数据插入数据库?

2024-04-24

我正在尝试使用 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 将二进制数据插入数据库的示例。任何帮助,将不胜感激!


您可以使用 DB::未准备好( $code ); 或者 数据库::插入()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Laravel 将二进制数据插入数据库? 的相关文章

随机推荐