Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Zend Framework 2-条令2-在时间戳字段创建_Php_Doctrine Orm_Timestamp_Zend Framework2_Event Listener - Fatal编程技术网

Php Zend Framework 2-条令2-在时间戳字段创建

Php Zend Framework 2-条令2-在时间戳字段创建,php,doctrine-orm,timestamp,zend-framework2,event-listener,Php,Doctrine Orm,Timestamp,Zend Framework2,Event Listener,我想在ZF2中创建一个自定义创建的注释。我在Symfony2中找到了如何构建这样一个注释的方法 一切似乎都很容易复制,除了注册预科生监听器 Symfony中的代码为: services: created_at_listener: class: Scandio\Annotations\Driver\CreatedAtDriver tags: - {name: doctrine.event_listener, event: prePersist} argument

我想在ZF2中创建一个自定义创建的注释。我在Symfony2中找到了如何构建这样一个注释的方法

一切似乎都很容易复制,除了注册预科生监听器

Symfony中的代码为:

services:
created_at_listener:
    class: Scandio\Annotations\Driver\CreatedAtDriver
    tags:
      - {name: doctrine.event_listener, event: prePersist}
    arguments: [@annotation_reader]
如何在Zend中实现这一点,有什么建议吗

谢谢

我找到了一个不同的解决方案来创建在时间戳创建的PrePersist:

/**
 * ...
 * @ORM\HasLifecycleCallbacks
 * ...
*/
class ChangeRequest

    ...

    /**
     * @ORM\Column(type="datetime", nullable=true)
     * @Form\Attributes({"type":"text"})
     * @Form\Options({"label":"Created at"})
     * @Form\Exclude()
     */
    protected $created_at;

    ...

    /**
     * @ORM\PrePersist
     */
    public function timestamp()
        {
        if(is_null($this->getCreatedAt())) {
            $this->setCreatedAt(new \DateTime());
        }
        return $this;
    }
我找到了一个不同的解决方案来创建在时间戳创建的PrePersist:

/**
 * ...
 * @ORM\HasLifecycleCallbacks
 * ...
*/
class ChangeRequest

    ...

    /**
     * @ORM\Column(type="datetime", nullable=true)
     * @Form\Attributes({"type":"text"})
     * @Form\Options({"label":"Created at"})
     * @Form\Exclude()
     */
    protected $created_at;

    ...

    /**
     * @ORM\PrePersist
     */
    public function timestamp()
        {
        if(is_null($this->getCreatedAt())) {
            $this->setCreatedAt(new \DateTime());
        }
        return $this;
    }
更简单的解决方案:

class ChangeRequest
{
    public function __construct()
    {
        $this->created_at=new \DateTime();
    }

    ...

    /**
     * @ORM\Column(type="datetime", nullable=true)
     * @Form\Attributes({"type":"text"})
     * @Form\Options({"label":"Created at"})
     * @Form\Exclude()
     */
    protected $created_at;

    ...
}
无需昂贵的事件功能。

更简单的解决方案:

class ChangeRequest
{
    public function __construct()
    {
        $this->created_at=new \DateTime();
    }

    ...

    /**
     * @ORM\Column(type="datetime", nullable=true)
     * @Form\Attributes({"type":"text"})
     * @Form\Options({"label":"Created at"})
     * @Form\Exclude()
     */
    protected $created_at;

    ...
}
没有昂贵的事件功能