English 中文(简体)
Doctrine 2: Call to a member function format() on a non-object ... in DateTimeType.php
原标题:

I have a DateTime field:

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

which is set to a default value by using a LifeCycleCallback

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

I am getting the following error:

Fatal error: Call to a member function format() on a non-object in D:ResourceLibraryFrameworksDoctrinelibDoctrineDBALTypesDateTimeType.php on line 46

最佳回答

The date() function returns a string. The datetime type works with DateTime objects. So either change the mapping type to string or use DateTime objects.

问题回答

you could always use:

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

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

Try and use your setCreated with annotations for @ORMPrePersist and setUpdated with annotations for @ORMPrePersist and @ORMPreUpdate methods as opposed to prePersist and preUpdate methods...

/**
 * @ORMPrePersist
 */
public function setCreated()
{
    $this->created = new DateTime();
}

/**
 * @ORMPrePersist
 * @ORMPreUpdate
 */
public function setUpdated()
{
    $this->updated = new DateTime();
}

I came across a similar problem, but with a time field, and this question and @romanb s answer helped.

I was getting the following error, much like the one in the question.

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

The solution was similar, for fields of the time datatype, Doctrine will accept an instance of PHP s DateInterval

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




相关问题
Brute-force/DoS prevention in PHP [closed]

I am trying to write a script to prevent brute-force login attempts in a website I m building. The logic goes something like this: User sends login information. Check if username and password is ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

定值美元

如何确认来自正确来源的数字。

Generating a drop down list of timezones with PHP

Most sites need some way to show the dates on the site in the users preferred timezone. Below are two lists that I found and then one method using the built in PHP DateTime class in PHP 5. I need ...

Text as watermarking in PHP

I want to create text as a watermark for an image. the water mark should have the following properties front: Impact color: white opacity: 31% Font style: regular, bold Bevel and Emboss size: 30 ...

How does php cast boolean variables?

How does php cast boolean variables? I was trying to save a boolean value to an array: $result["Users"]["is_login"] = true; but when I use debug the is_login value is blank. and when I do ...

热门标签