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{

「flow doctrine:update」コマンドを使用しようとすると、次のエラー メッセージが表示されます。

キャッチされない例外エンティティ '...\Domain\Model\BaseClass' には、ライフサイクル コールバックとして登録されるメソッド 'Flow_Aop_Proxy_fixMethodsAndAdvicesArrayForDoctrineProxies' がありません。

では、TYPO3 Flow でモデル継承を使用することは可能ですか?

4

1 に答える 1

1

私はそれを行う1つの方法を見つけました。

BaseClass を抽象化し、次のようにすべての追加の注釈を追加するだけです。

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

そして、そのようにモデルを拡張します:

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

SomeModel のテーブルには、 BaseClassの属性が含まれるようになります。ただし、BaseClass 自体はデータベース スキーマでは表されません。

より複雑なソリューションにトレイトを使用することもできます。

于 2015-03-24T12:46:18.527 に答える