2015-12-15 36 views
1

我有一個類管理成員, 我所有的日期時間字段都返回NULLSymfony2的getDateTime返回Null

/** 
* Date/Time of the last activity 
* 
* @ORM\Column(name="last_activity_at", type="datetime", nullable=true) 
*/ 
protected $last_activity_at = null; 

/** 
* @param datetime $lastActivityAt 
*/ 
public function setLastActivityAt($lastActivityAt) 
{ 
    $this->last_activity_at = $lastActivityAt; 
} 

/** 
* @return datetime 
*/ 
public function getLastActivityAt() 
{ 
    return $this->last_activity_at; 
} 

很顯然,我在我的數據庫具有數據

enter image description here

然而,當我找回我的$ member對象的所有值都在那裏,但日期和日期時間字段爲空

enter image description here

建議?

+0

protected $ last_activity_at = null - 似乎是一個可能的罪魁禍首,默認參數應該在構造函數中。除去= null,你不需要它,教義會爲你處理。 – Richard

+0

沒有好運對不起@理查德 – NickOS

+0

檢查您在Resources/config/doctrine下沒有任何映射文件,因爲它們可能會干擾您的註釋。順便說一句,不要依賴構造函數初始化。水合過程中不調用構造函數,因此您可能會收到意想不到的行爲。 – Cerad

回答

0

將以上內容替換爲以下內容會發生什麼?

/** 
* Date/Time of the last activity 
* 
* @var \DateTime 
* @Doctrine\ORM\Mapping\Column(name="last_activity_at", type="datetime", nullable=true) 
*/ 
protected $last_activity_at; 

/** 
* @param \DateTime $lastActivityAt 
*/ 
public function setLastActivityAt(\DateTime $lastActivityAt) 
{ 
    $this->last_activity_at = $lastActivityAt; 
} 

/** 
* @return \DateTime 
*/ 
public function getLastActivityAt() 
{ 
    return $this->last_activity_at; 
} 
+0

仍然爲空對不起埃裏克 – NickOS

0

有幾種方法可以設置這些字段。但從你的字段名判斷,我建議Doctrine LifecycleCallbacks

從文檔:生命週期回調是定義在一個實體類。它們允許您在該實體類的實例遇到相關生命週期事件時觸發回調。

例子:

/** @PreUpdate */ 
public function onLastActivityAtPreUpdate() 
{ 
    $this->last_activity_at = new \DateTime(); 
} 

Documentation你有幾個活動的全覆蓋,你要選擇哪種最適合您。

+0

感謝Stiven,我熟悉生命週期回調教條,我認爲我的問題是,我的obj是懶惰從某處加載,我的日期時間對象返回,如果我寫一個自定義查詢和水合數組,但使用obj getters,他們總是返回null。 目前還不是一個關鍵問題,只是一個小錯誤 – NickOS

+0

@NickOS這是一個服務嗎? – stevenll

+0

是的,我有一個作爲服務在內核上運行的事件偵聽器 – NickOS