学说2:调用一个成员函数格式()一个非对象...在DateTimeType.php
我有一个DateTime
字段:学说2:调用一个成员函数格式()一个非对象...在DateTimeType.php
/**
* Date time posted
* @Column(type="datetime")
*/
private $dtPosted;
它是通过使用一个LifeCycleCallback设置为默认值
/**
* @PrePersist
*/
function onPrePersist() {
// set default date
$this->dtPosted = date('Y-m-d H:m:s');
我收到以下错误:
Fatal error: Call to a member function format() on a non-object in D:\ResourceLibrary\Frameworks\Doctrine\lib\Doctrine\DBAL\Types\DateTimeType.php on line 46
的date()
本功能离子返回一个字符串。 datetime
类型与DateTime
对象一起使用。因此,请将映射类型更改为string
或使用DateTime
对象。
,你总是可以使用:
$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”);' – redolent 2014-05-06 17:25:04
感谢它的工作:) – 2015-09-10 10:20:57
我碰到类似的问题,但有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
数据类型的字段,学说将接受PHP的DateInterval
$quizFixture1->setCompletionTime(\DateInterval::createFromDateString('743 seconds'));
尝试的实例,并用你的setCreated与注解@ORM \ PrePersist与注释setUpdated对于@ORM \ PrePersist和@ORM \ PreUpdate方法,而不是prePersist和preUpdate方法...
/**
* @ORM\PrePersist
*/
public function setCreated()
{
$this->created = new \DateTime();
}
/**
* @ORM\PrePersist
* @ORM\PreUpdate
*/
public function setUpdated()
{
$this->updated = new \DateTime();
}
你是对的。我使用'date_create(date(...))'或'DateTime :: __ construct()' – 2010-08-01 03:25:11
@JiewMeng:很好的解决方案,谢谢! – Ron 2012-12-28 13:37:13