arthem / object-reference-bundle
Object reference bundle
Package info
github.com/4rthem/object-reference-bundle
Type:symfony-bundle
pkg:composer/arthem/object-reference-bundle
1.1.1
2026-10-07 21:08 UTC
Requires
- php: ^8.5
- doctrine/doctrine-bundle: ^2.9 || ^3
- doctrine/orm: ^2.16 || ^3
- symfony/framework-bundle: ^6.4 || ^7.0 || ^8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^v3.58.1
- phpunit/phpunit: ^11.1.3
- ramsey/uuid: ^4.7
- symfony/cache: ^6.4 || ^7.0 || ^8.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-07 21:08:40 UTC
README
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