有人向我解釋了Doctrine自動生成的文件<ModelName>.class.php
和<ModelName>Table.class.php
之間的區別嗎? 例如在Jobeet教程中有JobeetJob.class.php和JobeetJobTable.class.php。Symfony在<ModelName> .class.php和<ModelName>之間的區別Table.class.php
我不明白每個文件的作用,以及我必須爲模型類添加方法的位置。
有人向我解釋了Doctrine自動生成的文件<ModelName>.class.php
和<ModelName>Table.class.php
之間的區別嗎? 例如在Jobeet教程中有JobeetJob.class.php和JobeetJobTable.class.php。Symfony在<ModelName> .class.php和<ModelName>之間的區別Table.class.php
我不明白每個文件的作用,以及我必須爲模型類添加方法的位置。
XXX.class文件包含Doctrine_Record後代,該後代旨在對單個記錄進行操作。保存,創建,編輯等。 XXXTable.class.php保存Doctrine_Table後代,該後代旨在對整個表格進行操作。例如搜索記錄。
分形器,因此,我們可以推斷創建,編輯,刪除功能將屬於XXX.class和所有查詢,如 - 選擇從哪裏> ....將成爲XXXTable.class.php的一部分? – 2010-10-13 15:09:25
對於查詢你可以更好地使用DQL。它更強大。 – 2010-10-20 07:49:14
Your Modelname.class.php文件包含容器類,例如Post。這個類具有表中一行的所有方法和屬性,例如Post表。如果你在表格中有像id,文字等那樣的列,你可以通過Post類訪問它們。
但是,您的PostTable(或XxxxxTable類)是表引用,意味着此類應該負責查詢表以獲取數據。
讓我舉個簡單的例子。比方說,你想從表中拉出一個單一的職位,然後編輯。
首先,您會喜歡$post = Doctrine::getTable('Post')->findOneById(1);
這是從表類完成的,因爲您需要從特定表中提取某些數據。
現在你有你的文章(如Post對象),因爲->findOneById(...)
爲你查詢數據庫。然後你可以編輯它,例如$post->title = "a nice title"
。最後,保存你的帖子$post->save();
。
例外情況是,當您想要獲取相關對象時,例如可能會回覆您的帖子。這將通過您已經拉出到$post
的對象完成。
我希望我明確表達了我的觀點 - 如果沒有,請不要猶豫,再提問。
這非常類似於:http://stackoverflow.com/questions/11714387/choosing-between-symfonys-doctrine-orm-files-model-class-php-and-modeltable-cla/11729994#11729994 – Omn 2013-03-21 23:02:59