我是框架的新手,还是ORM概念的新手。如果Eloquent将一个类映射到数据库表,那么该类也不应该处理表设计吗?
例如,我想创建一个Person
和Model
属性的name
类(准确地说是age
)。我必须首先创建一个表,在persons
迁移文件中声明2个字段,然后对其进行迁移,然后才能创建Person
模型。我可以使用'-mr'一次创建所有内容,但这不是我想要的答案。
在我看来,自然的方法是创建一个Person
类,Laravel自动为其创建一个表,然后将它们映射在一起。为什么Laravel不是这样设计的?
另一个示例可能是SQLAlchemy。在此introduction page中,SQLAlchemy还声称“独立的映射和类设计”是一个优势功能。
答案 0 :(得分:1)
我要带给您的也许是轶事证据,但它帮助我理解了为何存在这种分离。
之前,我完成了一个项目,其中有两种类型的用户都驻留在“用户”表中。一种是客户;另一种是客户。另一种类型是工人。他们两个都有非常相似的数据,例如姓名,地址,电子邮件等。
由于我只有一个表,所以只有一个迁移文件。但是有两种不同的模型。一个给客户,另一个给工人。
尽管它们的数据相似,但功能却有很大不同。客户无法被雇用。因此,在客户模型(或用户模型)中编写get_hired()函数将很愚蠢。它属于工作人员模型。它使代码更易于管理。
因此,模型和迁移的分离在这方面有所帮助。迁移可以让您使用表结构,而模型可以让您使用实际数据。因此,它有助于编写更易于管理的代码。
从技术上讲,您可以在一个PHP文件中编写所有逻辑。但是很难管理它。此处也应用相同的逻辑。