【问题标题】:laravel do I need a Model and Controller for every single table?laravel 我是否需要每个表的模型和控制器?
【发布时间】:2016-05-21 08:53:12
【问题描述】:

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

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

【问题讨论】:

    标签: php laravel model controller


    【解决方案1】:

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

    例如,userspostscomments 等表是实体。而posts_userscomments_posts 不是:它们在这里是出于技术原因,以实现两个实体之间的关系。

    只有实体需要模型:为关系表建立模型是没有意义的。

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

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

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

    都是组织的问题:一般来说,Controller类是用来对同一个作用域内的方法进行分组的:用户登录、注销、订阅、密码提醒都是同一个作用域。所有这些控制器可能属于不同的类或功能。没关系。每个方法都是一个控制器。它们被归为同一类,因为它们具有相同的需求(检查用户是否已登录,了解是否需要登录,是否可以显示订阅页面等)并且它们处于相同的范围内,这才有意义你想想看。这是合乎逻辑的:当您需要更改有关用户标识的某些内容时(即使您是该项目的新手),您知道在哪里进行搜索。

    所以你需要为这些实体建立一个模型:

    • 用户
    • 报价
    • 发票
    • 类别

    您需要的控制器取决于您想要/需要如何处理这些数据。您的这部分问题没有现成的答案。

    使用控制器类:

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

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

    【讨论】:

    • invoice_details 和 offer_details 表怎么样...我需要它们的模型吗??
    • 不,因为它们不是实体。 Laravel 允许您使用 Eloquent withPivot() 方法访问数据透视表列。
    猜你喜欢
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 2011-11-09
    • 1970-01-01
    相关资源
    最近更新 更多