【问题标题】:In Laravel should every migration be associated with a model? [closed]在 Laravel 中,每个迁移都应该与一个模型相关联吗? [关闭]
【发布时间】:2021-10-24 21:44:35
【问题描述】:

我正在使用 Laravel 构建一个约会应用程序,我表中的每个用户都将具有性别、关系状态、体型、种族、宗教、标志等。在为每个用户创建迁移后,我是否还应该创建模型?我打算有一个 user_details 表,我在其中存储 user_id 和他的其他详细信息,如性别 ID、身体类型 ID 等。真的有必要为每个这些都有一个模型吗?

【问题讨论】:

  • 一般来说是的,但是你可以有不直接关联到模型的表,比如数据透视表、配置等。如果你觉得模型是多余/不必要的,Laravel 可以正常工作没有他们使用DB::table(...)->select(...)等方法。
  • 对于您的用例,UserUserDetailGender 可以是模型(或gender 可以是user_details 上的列,取决于规范化级别),@987654327 @ 可以是模型或列,由您决定。
  • 每个表都有模型是一种很好的方法。这样,您可以将与数据库相关的职责转移到模型上。您可以在需要时创建模型。例如,假设现在您只需要处理users 表,然后只创建User 模型,当您将处理user_details 时,然后为它创建一个新模型。此外,如果您要定义任何关系,则必须创建一个新模型。与User 一样,您可能还需要事先使用UserDetail

标签: laravel model database-migration


【解决方案1】:

如果您使用“Laravel 方式”进行操作,那么是的,所有使用外键的列都应该与模型类相关。否则,所有表都应该与模型类相关。

数据透视表(belongsToMany)在这里是个例外,尽管它们也可以有自己的类:中间(或数据透视)模型(在文档中:https://laravel.com/docs/8.x/eloquent-relationships#defining-custom-intermediate-table-models)。

显然,这就是 Laravel 的工作方式,并希望你也能工作。如果您更喜欢使用流畅甚至原始查询而不是专用模型,欢迎您使用它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 2013-10-24
    • 2018-12-11
    • 2016-01-29
    • 1970-01-01
    相关资源
    最近更新 更多