timostamm/orm-resource

将文件存储在 Doctrine ORM 数据库中

v1.1.0 2023-04-17 08:21 UTC

This package is auto-updated.

Last update: 2024-09-17 11:30:03 UTC


README

build Packagist PHP Version GitHub tag License

实际上并不在数据库中存储文件,而是将它们放入存储目录并在数据库中引用它们。

此包使用 timostamm/web-resource 来表示文件。

文件系统中的文件永远不会被删除。

示例

/** @ORM\Entity() */
class TestEntity
{

    /**
     * @ORM\Embedded(class = EmbeddedResource::class )
     */
    private $file;


    public function getFile(): ?ResourceInterface
    {
        return $this->file;
    }

    public function setFile(?ResourceInterface $resource): void
    {
        $this->file = EmbeddedResource::create($resource);
    }

}


$em->getEventManager()
    ->addEventSubscriber(new ORMResourceHandler(new HashStorage($storageDir)));

$e = new TestEntity();
$e->setFile(Resource::fromFile(__FILE__));

$em->persist($e);
$em->flush($e);