【问题标题】:Doctrine 2: Call to a member function format() on a non-object ... in DateTimeType.php原则 2:在 DateTimeType.php 中对非对象 ... 调用成员函数 format()
【发布时间】:2010-07-31 15:35:27
【问题描述】:

我有一个DateTime 字段:

/**
 * Date time posted
 * @Column(type="datetime")
 */
private $dtPosted;

使用 LifeCycleCallback 设置为默认值

/**
 * @PrePersist
 */
function onPrePersist() {
    // set default date
    $this->dtPosted = date('Y-m-d H:m:s');

我收到以下错误:

致命错误:调用成员函数 format() 在非对象上 D:\ResourceLibrary\Frameworks\Doctrine\lib\Doctrine\DBAL\Types\DateTimeType.php 第 46 行

【问题讨论】:

    标签: php doctrine-orm doctrine


    【解决方案1】:

    date() 函数返回一个字符串。 datetime 类型适用于 DateTime 对象。所以要么将映射类型更改为string,要么使用DateTime 对象。

    【讨论】:

    • 你是对的。我应该使用date_create(date(...))DateTime::__construct()
    【解决方案2】:

    你总是可以使用:

    $this->updated = new \DateTime("now");
    

    http://www.doctrine-project.org/docs/orm/2.0/en/cookbook/working-with-datetime.html

    【讨论】:

    • 或将use \DateTime;放在文件顶部,然后$this->updated = new DateTime("now");
    【解决方案3】:

    尝试使用带有@ORM\PrePersist 注释的setCreated 和带有@ORM\PrePersist 和@ORM\PreUpdate 方法注释的setUpdated,而不是prePersist 和preUpdate 方法...

    /**
     * @ORM\PrePersist
     */
    public function setCreated()
    {
        $this->created = new \DateTime();
    }
    
    /**
     * @ORM\PrePersist
     * @ORM\PreUpdate
     */
    public function setUpdated()
    {
        $this->updated = new \DateTime();
    }
    

    【讨论】:

      【解决方案4】:

      我遇到了一个类似的问题,但有一个 time 字段,这个问题和 @romanb 的回答有所帮助。

      我收到了以下错误,很像问题中的错误。

      Call to a member function format() on a non-object in 
      ... /vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/TimeType.php on line 50
      

      解决方案类似,对于 time 数据类型的字段,Doctrine 将接受 PHP 的 DateInterval 实例

      $quizFixture1->setCompletionTime(\DateInterval::createFromDateString('743 seconds'));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-30
        • 2015-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-02
        相关资源
        最近更新 更多