laravel 5.2我需要每个表的模型和控制器吗?

时间:2016-05-21 08:53:13

标签: php model controller laravel-5.2

我知道这是一个重复的问题,但我认为它会对其他人有所帮助,因为有很多类似的应用程序都有这种表关系:

enter image description here

所以问题是使用Eloquent对这个模式中的所有关系的最佳解决方案是什么? 要制作多少型号和控制器?

1 个答案:

答案 0 :(得分:6)

首先,您需要了解并非数据库中的所有表都代表实体。

例如,userspostscomments等表格就是实体。鉴于posts_userscomments_posts不是:它们出于技术原因,实现了2个实体之间的关系。

只有实体需要一个模型:拥有 relation 表的模型是没有意义的。

即使表格包含date_created之类的信息,也不会使其成为实体。这只是与关系相关的数据。例如,表users_roles可能有一个名为date_assigned的列,以了解给定用户何时被分配给定角色。这不是所有这一切的权利。

其次,您需要了解控制器的用途。控制器的作用是处理请求并提供结果。结果可以是视图,错误(HTTP 404),也可以是操作已成功完成的事实。

您还必须区分名为Controller的类(或扩展此基类的任何子类)和实际控件。实际的控制器是处理请求的代码。 Controller类可以有多个方法来处理请求。

这完全是组织问题:通常,Controller类用于对同一范围内的方法进行分组:用户登录,注销,订阅,密码提醒都是相同的范围。所有这些控制器可以是不同的类或功能。不要紧。每种方法都是一个控制器。它们被分组在同一个类中,因为它们具有相同的需求(检查用户是否登录,知道是否需要登录,是否可以显示订阅页面等)并且它们在相同的范围内,这在你想到了。这是合乎逻辑的:当您需要更改有关用户标识的内容时,您知道在哪里搜索(即使您是项目的新手)。

所以你需要这些实体的模型:

  • 用户
  • 优惠
  • 发票
  • 分类

您需要的控制器取决于您希望/需要对此数据执行的操作。这部分问题没有现成的答案。

使用Controller类:

  • 用户身份验证(如果您需要)
  • 用户管理(后台)
  • 发票管理(编辑,标记付款,延迟付款清单等)
  • 类别管理(创建,编辑,删除)
  • 提供管理

但根据您的应用,您可能需要更多。只有你真的可以说。这个问题没有错误的答案:如果你认为某些控制器应该分开以便更好地组织,那就去做吧。如果您认为应该将2组或更多组,请执行此操作。没有规则。您必须保持代码清晰,井井有条。它必须满足您的需求。就是这样。