【问题标题】:Models in Laravel 5Laravel 5 中的模型
【发布时间】:2017-06-28 03:30:13
【问题描述】:

我在这里使用 Laravel + AngularJS 做一个网络应用程序,我有一个问题。我需要为我的数据库中的每个表创建一个模型吗?我的数据库中有 87 个表,我需要根据用户想要的输入来查询所有表。

我只是想确保所有表都必须有一个模型文件,或者一个就足够了。

【问题讨论】:

  • 请添加一些您之前尝试过的代码。

标签: php mysql angularjs laravel-5


【解决方案1】:

您可以通过两种方式访问​​数据库表:

  1. Eloquent ORM(取决于型号)
  2. DB Facade Query Builder(独立于模型)

前者,是执行数据库查询和相关任务的更干净和最佳的方法,而后者不干净,您将难以管理大型应用程序,正如您所说的那样,您的应用程序中有 80 多个表.

另外,如果您使用 Eloquent 方式,那么最好有一个基本模型,它具有可以在子模型中继承的通用代码。就像如果您想存储进行了一些 DB 更改的“用户 id”,那么在启动函数中,您可以编写 Auth::id() 并将该值分配给表上的 changed_by 字段。

在 DB Facade 方式中,每次执行 DB 操作时都必须对表名进行硬编码,当您发现必须更改表名时会导致不一致,这种情况仍然很少见如果在一个文件中有多个表 DB 操作正在进行,则将很难管理。有一些选项,比如创建一个全局表名变量,可以访问该变量来执行 DB 操作。

结论: 是的,为实现 Eloquent 方式创建 80+ 模型是痛苦的,但在短期内,随着应用程序的增长,您将易于管理,如果其他开发人员开始使用它,这将是一件好事,因为它会给DB的概述,它将提高代码的可读性。

【讨论】:

    【解决方案2】:

    这取决于您希望如何处理查询。

    如果您想使用 Eloquent ORM,您需要模型类来处理对象和关系。那是一个表的模型,除了中间关系表,可以通过pivot属性访问。

    还支持原始 SQL 查询。您实际上并不需要它们的模型类,因为结果数组中的每个结果都是 PHP StdClass 对象。不过,您需要编写原始 SQL。

    请参阅 Laravel documentation

    【讨论】:

      猜你喜欢
      • 2015-08-08
      • 2015-05-07
      • 2016-09-11
      • 1970-01-01
      • 2015-03-12
      • 1970-01-01
      • 1970-01-01
      • 2017-05-25
      • 2019-07-26
      相关资源
      最近更新 更多