<modelname> .class.php和<modelname> Table.class.php </modelname> </modelname>之间的Symfony区别

时间:2009-11-03 15:10:41

标签: php symfony1 model doctrine

有人向我解释了Doctrine自动生成的文件<ModelName>.class.php<ModelName>Table.class.php之间的区别吗? 例如,在Jobeet教程中,有JobeetJob.class.php和JobeetJobTable.class.php

我不明白每个文件的作用以及我必须为模型类放置方法的位置。

2 个答案:

答案 0 :(得分:3)

XXX.class文件包含Doctrine_Record后代,该后代旨在对单个记录进行操作。保存,创建,编辑等 XXXTable.class.php包含Doctrine_Table后代,用于在整个表上运行。例如,搜索记录。

答案 1 :(得分:2)

您的Modelname.class.php文件包含容器类,例如Post。此类具有表中一行的所有方法和属性,例如Post表。如果表中有列,如id,text等,您可以通过Post类访问它们。

但是,PostTable(或XxxxxTable类)是引用,这意味着该类应负责查询表以获取数据。

让我举一个简短的例子。假设您希望从表中提取一个帖子然后进行编辑。

首先,你会这样做$post = Doctrine::getTable('Post')->findOneById(1);这是从表类完成的,因为你需要从特定的表中提取一些数据。

现在您有了帖子(如在Post对象中),因为->findOneById(...)为您查询了数据库。然后您可以编辑它,例如使用$post->title = "a nice title"。最后,使用$post->save();保存您的帖子。

例外情况是您想要获取相关对象,例如可能会回复您的帖子。这可以通过您已经提取到$post的对象来完成。

我希望我明确指出 - 如果没有,请不要犹豫,再提问。