【问题标题】:How to update a specific table in APIATO without affect existing data added previously如何在不影响之前添加的现有数据的情况下更新 APIATO 中的特定表
【发布时间】:2023-01-21 17:35:05
【问题描述】:

我目前正在使用 apiato 框架,因为我已经创建表并运行 migrate 命令,它将创建一个表但是一旦我想修改现有表,因此我需要运行 php aristan migrate:fresh,所有表的所有数据都将被删除。 你有没有其他方法可以简单地修改我的迁移代码并更新到数据库服务器而不删除所有添加的现有数据?

【问题讨论】:

  • 我不熟悉 laravel 或 apiato,但如果你不能更改表,我会感到惊讶,因为这是一个 mysql ddl 选项。
  • 我们有一个迁移文件,我们在其中写入表的每一列,如下所示 Schema::create('customers', function (Blueprint $table) { $table->increments('id'); $table->string(' customer_name')->nullable(); $table->string('customer_email')->nullable(); $table->timestamps(); $table->softDeletes(); });所以如果以后我修改这个文件例如创建一个新列,它不会影响我现有的表

标签: php mysql laravel apiato


【解决方案1】:

您应该避免编辑旧的迁移文件。创建一个新的迁移并在其中进行编辑。

你可以在here看到如何更新一个表

【讨论】:

    【解决方案2】:

    编辑整个迁移文件尤其是在生产环境中是不好的。 更好的方法是为您编辑创建一个新的迁移。 例如,如果你想在表中添加一列,创建一个名为的迁移:

    add_<column_name>_to_<table_name>_table
    

    话虽如此,迁移单个文件不会更改整个数据库,而只会刷新单个文件。 为了简单地运行:

    php artisan migrate:refresh --path=<path_to_your_migration_file>
    

    在你使用 apiato 时,目录应该是这样的

    Containers/<container_name>/Data/Migrations/<migration_file_name>
    

    希望对你有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-10
      • 2016-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-23
      • 1970-01-01
      • 2023-03-15
      相关资源
      最近更新 更多