有人向我解释 Doctrine 自动生成的文件<ModelName>.class.php
和<ModelName>Table.class.php
?例如在 Jobeet 教程中有 JobeetJob.class.php 和JobeetJobTable.class.php。
我不明白每个文件的作用以及我必须将模型类的方法放在哪里。
有人向我解释 Doctrine 自动生成的文件<ModelName>.class.php
和<ModelName>Table.class.php
?例如在 Jobeet 教程中有 JobeetJob.class.php 和JobeetJobTable.class.php。
我不明白每个文件的作用以及我必须将模型类的方法放在哪里。
XXX.class 文件包含 Doctrine_Record 后代,旨在对单个记录进行操作。保存、创建、编辑等。 XXXTable.class.php 包含 Doctrine_Table 的后代,旨在对整个表进行操作。例如搜索记录。
您的 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
。
我希望我的观点很清楚——如果没有,请不要犹豫,提出进一步的问题。