2012-10-26 75 views

回答

1

您可以創建一個方法getTimestamp(),該方法將返回一個new \DateTime($this->getDate()-­>format('Y-m-d') . ' ' . $this->getTime()->format('H:i:s'))對象並創建一個setTimestamp(\DateTime $date)方法,該方法將通過get date和time分隔設置兩個值。

public function setDate(\DateTime $date) 
{ 
    $this->date = $date; 
} 

public function getTime() 
{ 
    return $date; 
} 

public function setTime(\DateTime $date) 
{ 
    $this->date = $date; 
} 

public function getTime() 
{ 
    return $date; 
} 

public function getTimeStamp() { 
    return new \DateTime($this-­­>getDate()-­>format('Y-m-d') . ' ' . $this->getTime()->format('H:i:s')); 
} 

public function setTimeStamp(\DateTime $timestamp) { 
    $this->setDate(new \DateTime($timestamp->format('Y-m-d')); 
    $this->setTime(new \DateTime($timestamp->format('H:i:s')); 
} 

或類似的東西。然後您可以在您的代碼中專門使用get/setTimestamp()

DQL

你通過時間戳作爲一個單一的PARAM和綁定2個PARAMS這樣的:

public function getSomething(\DateTime $timestamp, $someparam) { 

    $dql = "SELECT ... FROM ... WHERE date = :date AND time = :time" 

    // Create query and params binding 
    // param('date', $timestamp-­>format('Y-m-d')); 
    // param('time', $timestamp-­>format('H:i:s')); 

    return $result; 

} 

您可能需要換你PARAMS值在new \DateTime()因爲教義需要一個DateTime實例作爲日期,時間和時間戳。

這給你一個簡單的接口來支持你的代碼,但允許抽象數據庫模式。

+0

偉大的解決方案,但我的DQL查詢應該如何寫? –

0

您還可以創建一個視圖,其中這些字段合併爲一個視圖。然後從您的模型類使用視圖,而不是真正的表。

+0

我在想這件事,但處理upserts的視圖規則的需求看起來比純粹的PHP解決方案更復雜。 –

相關問題