michel/paper-orm-bundle

PaperORMBundle is a Symfony bundle that integrates PaperORM, a lightweight and performant PHP ORM.

Installs: 0

Dependents: 0

Suggesters: 0

Security: 0

Type:symfony-bundle

pkg:composer/michel/paper-orm-bundle

0.0.1-alpha 2025-12-16 13:32 UTC

This package is not auto-updated.

Last update: 2025-12-16 19:51:30 UTC


README

PaperORMBundle is a Symfony bundle that integrates PaperORM, a lightweight and performant PHP ORM.

PaperORM itself is framework-agnostic. This bundle provides seamless integration into Symfony: configuration via config/packages/, service wiring, and logger support.

🚀 Installation

composer require michel/paper-orm-bundle:0.0.1-alpha

This will install both the bundle and the core PaperORM.

Then, enable the bundle (if Flex does not do it automatically):

// config/bundles.php
return [
    // ...
    Michel\PaperORMBundle\PaperORMBundle::class => ['all' => true],
];

⚙️ Configuration

Add your configuration in config/packages/paper_orm.yaml:

paper_orm:
  dsn: '%env(resolve:DATABASE_URL)%'
  debug: '%kernel.debug%'
  logger: 'paper.logger'
  entity_dir: '%kernel.project_dir%/src/Entity'
  migrations_dir: '%kernel.project_dir%/migrations'
  migrations_table: 'mig_versions'

Options

KeyTypeDefaultDescription
dsnstring(required)Database DSN
debugboolfalseEnable verbose debugging
loggerstringnullService ID of a logger (ex: paper.logger)
entity_dirstring%kernel.project_dir%/src/EntityPath to your entities
migrations_dirstring%kernel.project_dir%/migrationsPath to migration files
migrations_tablestringmig_versionsTable name used for migration tracking
proxy_autoloadboolfalseEnable Proxy autoload for session

🛠️ Services

After configuration, the following services are available in the container:

  • Michel\PaperORM\EntityManagerInterface
  • Michel\PaperORM\EntityManager

You can inject them directly:

use Michel\PaperORM\EntityManagerInterface;

final class UserService
{
    public function __construct(private EntityManagerInterface $em) {}

    public function createUser(string $name, string $email): void
    {
        $user = new User();
        $user->setName($name)->setEmail($email);

        $this->em->persist($user);
        $this->em->flush();
    }
}

📖 Documentation

Full ORM usage, entity mapping, and repositories are documented in the main PaperORM repository:

👉 PaperORM Documentation

📌 Status

This bundle is in alpha (0.0.1-alpha). We welcome early feedback, bug reports, and contributions.