2009-11-05 105 views
0

我試圖將我的一個PHP項目遷移到Doctrine。我以前從未使用過,因此有幾件事我不明白。在我當前的代碼,我有一個類似的類:保存教條記錄時將日期轉換爲字符串

class ScheduleItem { 
    private Date start; //A PEAR Date object. 
    private Date end; 

    public function getStart() { return $this->start; } 
    public function setStart($val) { $this->start = $val; } 

    public function getEnd() { return $this->end; } 
    public function setEnd($val) { $this->end= $val; } 
}

我有一個ScheduleItemDAO類方法,如save()getByID(),等等。當從加載和保存到數據庫中,在DAO類轉換Date對象從字符串到字符串,以便它們可以存儲在時間戳字段中。

在我嘗試移動到學說,我創建了一個新的類是這樣的:

class ScheduleItem extends Doctrine_Record { 
    public function setTableDefinition() { 
     $this->hasColumn('start', 'timestamp'); 
     $this->hasColumn('end', 'timestamp'); 
    } 
}

我希望我將能夠使用Date對象的開始和結束時間,並讓他們轉換成字符串保存到數據庫時。我怎樣才能做到這一點?

+0

以防萬一:meta.stackoverflow.com/questions/686/...;) – 2010-03-16 19:30:14

回答

0

您應該使用yaml文件來定義您的模式。使用yaml文件,您可以使用Doctrine command line interface生成您的類。您還可以使用CLI爲數據庫生成SQL,並創建數據庫和表。

學說應該把你的日期轉換成你的數據庫可以使用的東西,當你加載你的對象時再回來。

希望這會有所幫助。

+0

也許說教是當時的工作的錯誤工具。我對ORM的唯一其他經驗是休眠,我正在爲這個項目尋找類似的東西。基本上,我希望PHP對象與數據庫中的記錄相對應,但我也希望能夠將自己的方法添加到這些對象中。從yaml生成我的類不允許我這樣做。如果Doctrine_Record對象不允許我也定義對象上的操作,我真的不知道Doctrine_Record對象如何比關聯數組更好。 – takteek 2009-11-08 18:37:48

+0

您仍然可以將自定義代碼添加到每個對象。基本上,Doctrine將爲你創建「基礎」類。因此,如果您的yaml文件中定義了一個User對象,則Doctrine會創建:<您指定模型的位置> /generated/BaseUser.php和<您指定模型的位置> /User.php。用戶擴展BaseUser。您可以自由地添加到User.php,並且BaseUser.php將是您在yaml文件中更改用戶時唯一更改的內容。 – 2009-11-09 15:57:18