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

标签 php postgresql laravel

我正在尝试使用 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]: Character not in repertoire: 7 ERROR: invalid byte sequence for encoding "UTF8": 0x89 (SQL: insert into "DataBlobs" ("Data") values (binary gibberish that my console tries to render)

我已经使用 var_dump 和 bin2hex 验证 $d 实际上是一个包含我想要的数据的二进制字符串,但是从错误来看,Laravel 似乎试图将二进制数据作为 UTF8 字符串而不是作为二进制数据。我已经在谷歌上搜索了一天,但找不到任何有关如何使用 Laravel 将二进制数据插入数据库的示例。任何帮助将不胜感激!

最佳答案

你可以使用 DB::毫无准备( $code ); 要么 数据库::插入()

关于php - 如何使用 Laravel 将二进制数据插入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22270935/

相关文章:

php - 使用 $_GET 通过该 id 从 MySql 获取数据。如果 ?id=2dsfajhf 它从数据库中的 id "2"获取数据

php - 配置文件中不存在 Laravel 类转换器

php - 搜索表单的条件

laravel - 无法安装 laravel oci8

php - 将 '$_GET' 十六进制值(字符串形式)转换为十六进制 int ——如何?

php gethostbyname() 函数在 Linux 中不起作用

php - 更新Mysql : Manager Order Column(no ID) preserve numerical spaces

sql - PostgreSQL - 显示每个排序组的最后 N 行

python - 评估 bool 表达式并注释结果

PostgreSQL 在主键上的插入因争用而失败,即使在可序列化级别也是如此