2015-03-23 3 views
1

Я пытаюсь создать базовый класс для проектов Typo3 Flow. Он должен содержать дату «создан в» и «обновлен в». Поскольку Doctrine позволяет использовать сопоставление наследования, я хочу сделать свой базовый класс «MappedSuperclass».Наследование доктрины в потоке

BaseClass.php:

/** 
* @Flow\Entity 
* @ORM\MappedSuperclass 
*/ 
class BaseClass { 
    /** 
    * @var \DateTime 
    * @ORM\Column(type="datetime") 
    */ 
    protected $created; 

    /** 
    * @var \DateTime 
    * @ORM\Column(type="datetime") 
    */ 
    protected $updated; 

    ... 

component.php:

/** 
* @Flow\Entity 
* @ORM\InheritanceType("SINGLE_TABLE") 
*/ 
class Component extends BaseClass{ 

Если я пытаюсь использовать "доктрину потока: обновление" приказываю следующее сообщение об ошибке выскакивает:

Необлученное исключение Объект '... \ Domain \ Model \ BaseClass' не имеет метода 'Flow_Aop_Pr oxy_fixMethodsAndAdvicesArrayForDoctrineProxies 'должно быть зарегистрировано как обратный вызов жизненного цикла.

Так можно ли использовать наследование модели в TYPO3 Flow?

ответ

1

Я узнал один из способов сделать это.

Просто сделать ваш BaseClass абстрактным и добавить все дополнительные аннотации, как это:

/** 
* @Flow\Entity 
* @ORM\MappedSuperclass 
*/ 
abstract class BaseClass { 

и расширить свои модели так:

/** 
* @Flow\Entity 
* @ORM\InheritanceType("SINGLE_TABLE") 
*/ 
class SomeModel extends BaseClass{ 

Таблица SomeModel теперь будет иметь атрибуты из BaseClass. Но сам BaseClass не представлен в схеме базы данных.

Возможно, вы также можете использовать черты для более сложных решений.

Смежные вопросы