2012-10-11 19 views
5

私は私のcomposer.jsonに次の行を追加しました:Zend Framework 2でdoctrine拡張機能を設定する方法は?

"gedmo/doctrine-extensions": "dev-master" 

そして、これは私のモジュールのmodule.config.php内にある:

'doctrine' => array(
    'driver' => array(
     __NAMESPACE__ . '_driver' => array(
      'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
      'cache' => 'array', 
      'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity'), 
     ), 
     'orm_default' => array(
      'drivers' => array(
       __NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver' 
      ), 
     ), 
    ), 
), 

その後、私は私のエンティティにするTimestampable annotaionを使用したいです、たとえば:

/** 
* @Gedmo\Timestampable(on="create") 
* @ORM\Column(type="datetime",nullable=true) 
*/ 
private $created; 

/** 
* @Gedmo\Timestampable(on="update") 
* @ORM\Column(type="datetime",nullable=true) 
*/ 
private $updated; 

しかし、これは機能しません。上記の注釈でエンティティを永続化すると、作成および更新された列はNULLになります。

+0

はあまりにも明白かもしれませんが、あなたはまた、Gedmo'名前空間をロードするために 'ADDE? 'application.config.php'とあなたのエンティティクラス内のusestatementsの両方で? – Sam

+0

私はエンティティクラスを生成しようとして同じ問題があります。あなたはこれを働かせましたか? – atodd

+0

@atodd私の答えをチェックして、私はこれを理解しました。 –

答えて

12

ソリューションは、より多くのこのようなことに私のmodule.config.phpを変更しました:

'doctrine' => array(
    'driver' => array(
     __NAMESPACE__ . '_driver' => array(
      'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
      'cache' => 'array', 
      'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity'), 
     ), 
     'orm_default' => array(
      'drivers' => array(
       __NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver' 
      ), 
     ), 
    ), 
    'eventmanager' => array(
     'orm_default' => array(
      'subscribers' => array(
       'Gedmo\Timestampable\TimestampableListener', 
       'Gedmo\SoftDeleteable\SoftDeleteableListener', 
      ), 
     ), 
    ), 
), 
関連する問題