有人向我解释了Doctrine自动生成的文件<ModelName>.class.php
和<ModelName>Table.class.php
之间的区别吗?
例如,在Jobeet教程中,有JobeetJob.class.php和JobeetJobTable.class.php。
我不明白每个文件的作用以及我必须为模型类放置方法的位置。
答案 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
的对象来完成。
我希望我明确指出 - 如果没有,请不要犹豫,再提问。