Search by

arthem / object-reference-bundle

arthem

Object reference bundle

Package info

github.com/4rthem/object-reference-bundle

Type:symfony-bundle

pkg:composer/arthem/object-reference-bundle

Statistics

Installs: 2 430

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.1.1 2026-10-07 21:08 UTC

This package is auto-updated.

Last update: 2026-10-07 21:08:40 UTC


README

CI

Stores a reference to any mapped Doctrine entity in two columns (<field>Type and <field>Id).

Installation

composer require arthem/object-reference-bundle
// config/bundles.php
return [
    // ...
    Arthem\ObjectReferenceBundle\ArthemObjectReferenceBundle::class => ['all' => true],
];

Configuration

Map each referenceable class to a key, which is stored in the <field>Type column:

# config/packages/arthem_object_reference.yaml
arthem_object_reference:
    mapping:
        actor: App\Entity\Actor

Usage

namespace App\Entity;

use Arthem\ObjectReferenceBundle\Mapping\Attribute\ObjectReference;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;

#[ORM\Entity]
class Story
{
    #[ORM\Column(type: Types::STRING, length: 36, nullable: true)]
    #[ObjectReference(keyLength: 15)]
    private \Closure|Actor|null $actor = null;
    private $actorId; // must be declared, even if not used
    private $actorType; // must be declared, even if not used

    public function getActor(): ?Actor
    {
        if ($this->actor instanceof \Closure) {
            $this->actor = $this->actor->call($this);
        }

        return $this->actor;
    }

    public function setActor(?Actor $actor): void
    {
        $this->actor = $actor;
    }
}

Development

composer test
composer cs