【问题标题】:Creating new column in the model instead of the migration在模型中创建新列而不是迁移
【发布时间】:2019-07-30 09:31:14
【问题描述】:

我正在努力学习 laravel 并且进展顺利。但是 Eloquent 有一些东西让我觉得很奇怪。

显然您应该为每个表创建一个模型,然后进行迁移并将新列添加到迁移中。

但是如果我不能在模型类中添加新列并且必须编辑迁移文件,那么首先拥有模型类有什么意义呢?

【问题讨论】:

  • 模型将链接数据库表,迁移用于模式
  • 迁移纯粹是为了编辑表架构(结构)。该模型用于查询和操作该表中的数据。您可以使用没有模型的迁移,反之亦然。如果您确实添加了带有迁移的列,那么您很可能无论如何都需要更新模型,例如更新 $fillable$casts 属性,但取决于您如何设置模型以及列是什么,您可能不需要这样做。

标签: php laravel eloquent


【解决方案1】:

迁移

迁移就像数据库的版本控制,让您的团队可以轻松修改和共享应用程序的数据库架构。迁移通常与 Laravel 的模式构建器配对,以轻松构建应用程序的数据库模式。如果您曾经不得不告诉队友手动将列添加到他们的本地数据库架构中,那么您就遇到了数据库迁移解决的问题。

Source

型号

Laravel 中包含的 Eloquent ORM 提供了一个漂亮、简单的 ActiveRecord 实现来处理你的数据库。每个数据库表都有一个相应的“模型”,用于与该表进行交互。模型允许您查询表中的数据,以及向表中插入新记录。

Source

结论

总而言之,迁移允许您构建数据库并确保数据库保持不变,即使您使用版本控制系统或多个环境也是如此。模型是您与所述数据库的内容进行通信的方式。

结构 -> 迁移

数据 -> 模型

【讨论】:

    【解决方案2】:

    您的迁移文件包含数据库架构,它们用于创建数据库表。模型用于与这些表进行交互。您的模型扩展了负责查询数据库以进行 CRUD 操作的 Illuminate\Database\Eloquent\Model 类。

    您的迁移扩展 Illuminate\Database\Migrations\Migration 类,Migration 类负责根据您定义的架构创建或删除表和列。

    所以回到您的主要问题,将这两个逻辑保留在不同的类中是分离这些内容的更好方法。如果你将所有逻辑(表创建和 CRUD 操作)转储到一个类中,那将不如在 Laravel 中完成的那样干净。

    参考资料:

    1. https://laravel.com/docs/5.8/eloquent
    2. https://laravel.com/docs/5.8/migrations

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-07
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2019-11-29
      • 2011-11-04
      相关资源
      最近更新 更多