何时使用Doctrine_Table与常规模型类?

时间:2010-06-11 16:52:21

标签: model doctrine

我正在尝试了解何时适合使用Doctine_Table类以及在常规模型类文件中存储哪些方法。

另外,使用findBy *方法是一种好习惯吗?

1 个答案:

答案 0 :(得分:4)

使用模型类中对该模型的实例进行操作的方法 - 您检索过的用户记录,博客文章等。例如,您可能在用户记录上有setPassword()方法,它使用您自己的算法为该用户设置密码,或者在博客帖子上设置getTitleUppercased()方法,该帖子返回博客标题但是大写。

表类上的方法用于在整个表上进行操作 - 通常,您会在此处找到通过Doctrine魔术方法无法获得的查询方法。涉及特定连接的查询,特定参数(例如WHERE date > NOW() AND foo.bar < 5)应该放在这里。

如果您的查询很简单,最好使用findBy*方法 - 不要重新发明轮子。请注意,这些都是非常具体的,因此对findOneByEmail('test@example.com')之类的内容非常有用,但如果您需要更具体,请将查询移到表类中,并将其移动到自己的方法中。