如何将Silverstripe 4配置为使用BLOB字段而不是文件系统

时间:2018-11-15 06:29:20

标签: silverstripe silverstripe-4

在Silverstripe 4文档中,提到了使用BLOB或s3存储的可能性(https://www.silverstripe.org/learn/lessons/v4/working-with-files-and-images-1

但是我找不到任何有关如何处理BLOB存储的文档。这仅是关于配置还是需要一些实现?有例子吗?

1 个答案:

答案 0 :(得分:0)

您可以为BLOB创建一个自定义DBField类。

以下是DBBlobField类在MariaDB的SS 4.2中工作的示例。

use SilverStripe\ORM\DB;
use SilverStripe\ORM\FieldType\DBField;

class DBBlobField extends DBField
{
    function requireField()
    {
        DB::require_field($this->tableName, $this->name, "mediumblob");
    }
}

mediumblob是数据库支持的BLOB类型。

在DataObject中定义$ db字段。

private static $db = [
    "Data" => DBBlobField::class
];

将文件内容保存到Data字段中。

$dataObject->Data = file_get_contents($filePath);
$dataObject->write();