【发布时间】:2017-06-28 03:30:13
【问题描述】:
我在这里使用 Laravel + AngularJS 做一个网络应用程序,我有一个问题。我需要为我的数据库中的每个表创建一个模型吗?我的数据库中有 87 个表,我需要根据用户想要的输入来查询所有表。
我只是想确保所有表都必须有一个模型文件,或者一个就足够了。
【问题讨论】:
-
请添加一些您之前尝试过的代码。
标签: php mysql angularjs laravel-5
我在这里使用 Laravel + AngularJS 做一个网络应用程序,我有一个问题。我需要为我的数据库中的每个表创建一个模型吗?我的数据库中有 87 个表,我需要根据用户想要的输入来查询所有表。
我只是想确保所有表都必须有一个模型文件,或者一个就足够了。
【问题讨论】:
标签: php mysql angularjs laravel-5
您可以通过两种方式访问数据库表:
前者,是执行数据库查询和相关任务的更干净和最佳的方法,而后者不干净,您将难以管理大型应用程序,正如您所说的那样,您的应用程序中有 80 多个表.
另外,如果您使用 Eloquent 方式,那么最好有一个基本模型,它具有可以在子模型中继承的通用代码。就像如果您想存储进行了一些 DB 更改的“用户 id”,那么在启动函数中,您可以编写 Auth::id() 并将该值分配给表上的 changed_by 字段。
在 DB Facade 方式中,每次执行 DB 操作时都必须对表名进行硬编码,当您发现必须更改表名时会导致不一致,这种情况仍然很少见如果在一个文件中有多个表 DB 操作正在进行,则将很难管理。有一些选项,比如创建一个全局表名变量,可以访问该变量来执行 DB 操作。
结论: 是的,为实现 Eloquent 方式创建 80+ 模型是痛苦的,但在短期内,随着应用程序的增长,您将易于管理,如果其他开发人员开始使用它,这将是一件好事,因为它会给DB的概述,它将提高代码的可读性。
【讨论】:
这取决于您希望如何处理查询。
如果您想使用 Eloquent ORM,您需要模型类来处理对象和关系。那是一个表的模型,除了中间关系表,可以通过pivot属性访问。
还支持原始 SQL 查询。您实际上并不需要它们的模型类,因为结果数组中的每个结果都是 PHP StdClass 对象。不过,您需要编写原始 SQL。
请参阅 Laravel documentation。
【讨论】: