答案 0 :(得分:6)
首先,您需要了解并非数据库中的所有表都代表实体。
例如,users
,posts
,comments
等表格就是实体。鉴于posts_users
,comments_posts
不是:它们出于技术原因,实现了2个实体之间的关系。
只有实体需要一个模型:拥有 relation 表的模型是没有意义的。
即使表格包含date_created
之类的信息,也不会使其成为实体。这只是与关系相关的数据。例如,表users_roles
可能有一个名为date_assigned
的列,以了解给定用户何时被分配给定角色。这不是所有这一切的权利。
其次,您需要了解控制器的用途。控制器的作用是处理请求并提供结果。结果可以是视图,错误(HTTP 404),也可以是操作已成功完成的事实。
您还必须区分名为Controller
的类(或扩展此基类的任何子类)和实际控件。实际的控制器是处理请求的代码。 Controller类可以有多个方法来处理请求。
这完全是组织问题:通常,Controller类用于对同一范围内的方法进行分组:用户登录,注销,订阅,密码提醒都是相同的范围。所有这些控制器可以是不同的类或功能。不要紧。每种方法都是一个控制器。它们被分组在同一个类中,因为它们具有相同的需求(检查用户是否登录,知道是否需要登录,是否可以显示订阅页面等)并且它们在相同的范围内,这在你想到了。这是合乎逻辑的:当您需要更改有关用户标识的内容时,您知道在哪里搜索(即使您是项目的新手)。
所以你需要这些实体的模型:
您需要的控制器取决于您希望/需要对此数据执行的操作。这部分问题没有现成的答案。
使用Controller类:
但根据您的应用,您可能需要更多。只有你真的可以说。这个问题没有错误的答案:如果你认为某些控制器应该分开以便更好地组织,那就去做吧。如果您认为应该将2组或更多组,请执行此操作。没有规则。您必须保持代码清晰,井井有条。它必须满足您的需求。就是这样。