Skip to content

Instantly share code, notes, and snippets.

@LinuxDoku
Created July 3, 2014 20:16
Show Gist options
  • Save LinuxDoku/934c6f4e5bf4d8bd5ef0 to your computer and use it in GitHub Desktop.
Save LinuxDoku/934c6f4e5bf4d8bd5ef0 to your computer and use it in GitHub Desktop.
Article.php
<?php
namespace TheInsider\WebServiceBundle\Entity;
use Doctrine\Common\Persistence\Mapping\ClassMetadata;
use Doctrine\ORM\Mapping\Builder\ClassMetadataBuilder;
use TheInsider\Domain\Entity\Article as DomainArticle;
/**
* Doctrine implementation of the article domain entity.
*
* @author Martin Lantzsch <[email protected]>
* @package TheInsider.WebService
* @copyright (c) 2014, Martin Lantzsch
*/
class Article extends DomainArticle {
public static function loadMetadata(ClassMetadata $metadata) {
$builder = new ClassMetadataBuilder($metadata);
$builder->setCustomRepositoryClass('TheInsider\WebServiceBundle\Repository\ArticleRepository');
$builder->createField('id', 'integer')
->isPrimaryKey()
->generatedValue()
->build();
$builder->addField('isPublished', 'boolean')
->addField('publishedAt', 'datetime')
->addField('title', 'string')
->addField('teaser', 'string')
->addField('createdAt', 'datetime')
->addField('updatedAt', 'datetime')
->addField('previewImage', 'string');
$builder->addManyToOne('author', 'TheInsider\WebServiceBundle\Entity\Author');
$builder->addManyToOne('category', 'TheInsider\WebServiceBundle\Entity\ArticleCategory');
$builder->createManyToOne('contentBlocks', 'TheInsider\WebServiceBundle\Entity\TextBlock')
->cascadePersist()
->cascadeRemove()
->build();
$builder->addLifecycleEvent('updateTimestamps', 'prePersist');
$builder->addLifecycleEvent('updateTimestamps', 'preUpdate');
// Todo: add reference to content blocks
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment