2016-07-27 104 views
0

我有我需要插入到數據庫的日期值。 如果我嘗試添加一個簡單的字符串:使用DateTime設置日期時出現Symfony2格式錯誤

$user->setUpdatedAt('2015-05-31 05:46:23') 

OFC我得到的錯誤,該值必須是DateTime對象。

所以我創建DateTime對象:

$user->setUpdatedAt(new \DateTime($row[29])) 

這就造成:

object(DateTime)[1052] 
    public 'date' => string '2015-05-31 05:46:23' (length=19) 
    public 'timezone_type' => int 3 
    public 'timezone' => string 'Europe/Paris' (length=12) 

但是當我嘗試刷新我得到:

調用一個成員函數的格式( )在非物體上

爲什麼它看不到它的一個對象,當它顯然是?

UPDATE:

實體類IA簡單FOSUser生成的實體:

/** 
* @var \DateTime 
*/ 
protected $createdAt; 

/** 
* @var \DateTime 
*/ 
protected $updatedAt; 

/** 
* Sets the last update date. 
* 
* @param \DateTime|null $updatedAt 
* 
* @return User 
*/ 
public function setUpdatedAt(\DateTime $updatedAt = null) 
{ 
    $this->updatedAt = $updatedAt; 

    return $this; 
} 

/** 
* Returns the last update date. 
* 
* @return \DateTime|null 
*/ 
public function getUpdatedAt() 
{ 
    return $this->updatedAt; 
} 

/** 
* Hook on pre-persist operations. 
*/ 
public function prePersist() 
{ 
    $this->createdAt = new \DateTime(); 
    $this->updatedAt = new \DateTime(); 
} 
+1

向我們展示您的實體類的代碼。 –

+0

@AlokPatel我更新了我的問題 – Dominykas55

+0

'setUpdatedAt()'方法在哪裏? –

回答

0

主義的日期類型轉換傳入值(datetime對象,當然,如果你設置字段類型爲日期,日期時間,datetimetz)字符串,並將其從數據庫中提取時轉換回DateTime對象。嘗試根據您的映射類型找到正確的類(DateTimeType.php,DateTimeTzType.php,DateType.php)並調試convertToDatabaseValue方法(例如:dump($value);die();),檢查將要發生的值。或者使用xdebug,從你的setter調試到convertToDatabaseValue方法。

+0

你好,問題是,該值爲空,它沒有格式..我不明白爲什麼.. – Dominykas55

+0

@ Dominykas55它被重寫代碼中的某個地方然後。我建議你使用xdebug來找出在哪裏。 – xurshid29