Как настроить silverstripe 4 для использования поля BLOB вместо файловой системы - PullRequest
0 голосов
/ 15 ноября 2018

В документах Silverstripe 4 упоминается возможность использования хранилища BLOB или s3 (https://www.silverstripe.org/learn/lessons/v4/working-with-files-and-images-1)

Но я не могу найти никаких документов о том, как обращаться с хранилищем больших двоичных объектов. Это только о конфигурации или требуется некоторая реализация? Есть примеры?

1 Ответ

0 голосов
/ 16 ноября 2018

Вы можете создать собственный класс DBField для BLOB.

Вот пример DBBlobField класс работает в SS 4.2 с MariaDB.

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, поддерживаемый вашей базой данных.

Определите поле $ db в DataObject.

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

Сохранить содержимое файла в поле Data.

$dataObject->Data = file_get_contents($filePath);
$dataObject->write();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...