我正在尝试了解何时适合使用Doctine_Table类以及在常规模型类文件中存储哪些方法。
另外,使用findBy *方法是一种好习惯吗?
答案 0 :(得分:4)
使用模型类中对该模型的实例进行操作的方法 - 您检索过的用户记录,博客文章等。例如,您可能在用户记录上有setPassword()
方法,它使用您自己的算法为该用户设置密码,或者在博客帖子上设置getTitleUppercased()
方法,该帖子返回博客标题但是大写。
表类上的方法用于在整个表上进行操作 - 通常,您会在此处找到通过Doctrine魔术方法无法获得的查询方法。涉及特定连接的查询,特定参数(例如WHERE date > NOW() AND foo.bar < 5
)应该放在这里。
如果您的查询很简单,最好使用findBy*
方法 - 不要重新发明轮子。请注意,这些都是非常具体的,因此对findOneByEmail('test@example.com')
之类的内容非常有用,但如果您需要更具体,请将查询移到表类中,并将其移动到自己的方法中。