45 lines
1.2 KiB
Markdown
45 lines
1.2 KiB
Markdown
# PCM Metadata Bundle
|
|
|
|
Easily add scalar metadata to a Symfony entity via the use of a key-value interface.
|
|
|
|
# Installation
|
|
1. Add this repository to `composer.json`:
|
|
```json
|
|
"repositories": [
|
|
{
|
|
"type": "vcs",
|
|
"url": "ssh://git@git.pcmdev.co.uk:2222/pcm-libraries/pcm-metadata-bundle.git"
|
|
}
|
|
],
|
|
```
|
|
2. Install the bundle:
|
|
```sh
|
|
composer require pcm/metadata-bundle
|
|
```
|
|
3. If not set already add the following config to `doctrine.yaml` to prevent errors:
|
|
```yaml
|
|
doctrine:
|
|
orm:
|
|
enable_native_lazy_objects: true
|
|
```
|
|
|
|
# Usage
|
|
1. Use the `MetadataTrait` inside an entity:
|
|
```php
|
|
class MyEntity
|
|
{
|
|
use MetadataTrait;
|
|
}
|
|
```
|
|
2. Create and execute a new migration. The trait adds a `metadata` database field and as such we need to create a migration.
|
|
3. Access the metadata object with the readonly property `metadata`:
|
|
```php
|
|
$entity->metadata->set("name", "PCM");
|
|
$entity->metadata->get("name"); // "PCM"
|
|
$entity->metadata->isSet("name"); // true
|
|
```
|
|
|
|
> Like updating the value of a property normally, setting metadata values will not automatically update the database.
|
|
You must call `flush()` from the `EntityManager` as usual when you wish to persist data.
|
|
|