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

lew*_*s4u 6 php controller model laravel-5.2

我知道这是一个重复的问题,但我认为这将有助于其他人,因为有很多类似的应用程序具有这种表关系:

在此输入图像描述

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

Arc*_*las 10

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

例如,像表users,posts,comments都是实体.然而posts_users,comments_posts不是:它们出于技术原因,实现了2个实体之间的关系.

只有实体需要一个模型:拥有一个关系表的模型是没有意义的.

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

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

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

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

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

  • 用户
  • 提供
  • 发票
  • 类别

您需要的控制器取决于您对这些数据的需求/需要.对于这部分问题,没有现成的答案.

使用Controller类:

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

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