9

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

我不明白每个文件的作用以及我必须将模型类的方法放在哪里。

4

2 回答 2

4

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

于 2009-11-03T15:28:01.117 回答
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

我希望我的观点很清楚——如果没有,请不要犹豫,提出进一步的问题。

于 2009-11-03T16:03:57.893 回答