如何手动命名Laravel迁移,以便“ php artisan migration”可以运行它?

乐透96

我有一个用PHP编写的附带项目,可以根据我的审核表中的信息自动生成迁移文件。由于该文件是由我的应用程序创建的,而没有使用artisan命令,因此我不知道如何使Laravel看到我的迁移文件。

我的应用程序生成的迁移文件的示例:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class sampleMigration extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('audit_database_index_column_relations', function(Blueprint $table){
        $table->integer('relation_id');
        $table->integer('database_index_id');
        $table->integer('database_column_id');
        $table->integer('sequence_position');
        $table->integer('is_deleted');
});
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('audit_database_index_column_relations');
    }
}

关于我的尝试,我首先尝试指定链接到我的迁移文件的路径。但是,它显示的错误是

Symfony\Component\Debug\Exception\FatalThrowableError  : Class '' not found

  at C:\Users\L0tusw0w\Desktop\Laravel\testProject\vendor\laravel\framework\src\Illumi
nate\Database\Migrations\Migrator.php:448
    444|     public function resolve($file)
    445|     {
    446|         $class = Str::studly(implode('_', array_slice(explode('_', $file), 4)
));
    447|
  > 448|         return new $class;
    449|     }
    450|
    451|     /**
    452|      * Get all of the migration files in a given path.

  Exception trace:

  1   Illuminate\Database\Migrations\Migrator::resolve("sampleMigration")
      C:\Users\L0tusw0w\Desktop\Laravel\testProject\vendor\laravel\framework\src\Illum
inate\Database\Migrations\Migrator.php:186

  2   Illuminate\Database\Migrations\Migrator::runUp("C:\Users\L0tusw0w\Desktop\Larave
l\testProject/database/migrations/sampleMigration.php")
      C:\Users\L0tusw0w\Desktop\Laravel\testProject\vendor\laravel\framework\src\Illum
inate\Database\Migrations\Migrator.php:162

在第二次尝试中,我以up()函数作为示例替换了默认迁移“ create_user_table”的up()函数,并且正如我所期望的那样,它执行起来没有任何问题!通常,我认为该错误一定是由于我对文件的命名方式引起的。

因此,我想知道如何命名迁移文件,以便Laravel可以检测并运行它们

先感谢您!

亚历克·乔伊

在尝试运行迁移时收到的错误消息实际上提供了在这种情况下所需的答案。该函数使用文件名来确定迁移类的名称。我们从最里面的括号中读取了这样的链接函数,因此从头开始

explode('_', $file)

该方法采用文件名并将其爆炸成一个数组,在分数下分割。所以

2014_10_12_100000_create_password_resets_table

变成

[“ 2014”,“ 10”,“ 12”,“ 100000”,“创建”,“密码”,“重置”,“表格”,]

接下来,该方法将数组的前4个元素切开。这些元素包含创建迁移的时间戳,以确定运行迁移的顺序,但与类名无关

array_slice(explode('_', $file), 4)

所以现在我们有了

[“创建”,“密码”,“重置”,“表”,]

接下来,将数组折叠回字符串,并用下划线分隔每个单词

implode('_', array_slice(explode('_', $file), 4))

给我们

create_password_resets_table

最后,Laravel Str :: studly helper函数将此新字符串转换为studly大小写,以确定类名

Str::studly(implode('_', array_slice(explode('_', $file), 4)));

CreatePasswordResetsTable

因此,要创建迁移文件名,请以创建文件时的时间戳记开头,然后以小写形式添加类名,并用下划线分隔。

Class SampleMigration extends Migration

将会

2019_12_04_37860000_sample_migration

特别说明:不要跳过时间戳或尝试在前4个元素中抛出任何内容。文件在目录中出现的顺序就是执行迁移的顺序,时间戳记确保始终以正确的顺序运行迁移。跳过此步骤可能会导致更改表的迁移在创建表之前运行,或者更改顺序混乱,从而给您带来当前表意外的结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法在Laravel中运行PHP Artisan Migration

来自分类Dev

在Laravel代码中运行'php artisan migration:fresh'

来自分类Dev

无法运行php artisan migration命令

来自分类Dev

使用Laravel迁移重命名现有列,然后成功运行php artisan migrate:refresh成功

来自分类Dev

不能 php artisan 迁移

来自分类Dev

如何从我的虚拟机中运行php artisan迁移

来自分类Dev

我的迁移文件在运行“ php artisan migration”时引发错误

来自分类Dev

我如何在Laravel中使用“ php artisan migration”迁移数据库

来自分类Dev

Laravel-PHP Artisan Migration,表已存在

来自分类Dev

Laravel PHP Artisan服务运行一次后关闭

来自分类Dev

php artisan serve-如何获取mysql以运行

来自分类Dev

运行php artisan serve时如何退出命令流?

来自分类Dev

laravel-PHP Artisan迁移失败

来自分类Dev

我在Windows的哪里运行“ php artisan make:migration posts”?

来自分类Dev

我正在使用Laravel 5,但无法使用php artisan migration迁移数据库

来自分类Dev

在生产laravel网站上运行php artisan:clear命令可以吗?

来自分类Dev

针对包含主键和外键的迁移文件运行“ php artisan migration”时出现语法错误或访问冲突错误

来自分类Dev

运行php artisan时将表从laravel应用迁移到localhost数据库的问题

来自分类Dev

PHP Artisan Migration无法正常工作

来自分类Dev

如何在我的虚拟机中运行php artisan迁移

来自分类Dev

我可以运行例如 artisan 命令而不必键入 php

来自分类Dev

如何在远程服务器上执行“ php artisan migration”和其他Laravel命令?

来自分类Dev

如何在远程服务器上执行“ php artisan migration”和其他Laravel命令?

来自分类Dev

在 php artisan make:auth 之后,Laravel 在 php artisan 迁移上失败

来自分类Dev

自动运行php artisan ide:models

来自分类Dev

自动运行php artisan ide:models

来自分类Dev

Laravel Artisan迁移错误:“ zsh:非法硬件指令php artisan迁移”

来自分类Dev

PHP artisan迁移未创建新表

来自分类Dev

我的php artisan迁移发生了什么

Related 相关文章

  1. 1

    无法在Laravel中运行PHP Artisan Migration

  2. 2

    在Laravel代码中运行'php artisan migration:fresh'

  3. 3

    无法运行php artisan migration命令

  4. 4

    使用Laravel迁移重命名现有列,然后成功运行php artisan migrate:refresh成功

  5. 5

    不能 php artisan 迁移

  6. 6

    如何从我的虚拟机中运行php artisan迁移

  7. 7

    我的迁移文件在运行“ php artisan migration”时引发错误

  8. 8

    我如何在Laravel中使用“ php artisan migration”迁移数据库

  9. 9

    Laravel-PHP Artisan Migration,表已存在

  10. 10

    Laravel PHP Artisan服务运行一次后关闭

  11. 11

    php artisan serve-如何获取mysql以运行

  12. 12

    运行php artisan serve时如何退出命令流?

  13. 13

    laravel-PHP Artisan迁移失败

  14. 14

    我在Windows的哪里运行“ php artisan make:migration posts”?

  15. 15

    我正在使用Laravel 5,但无法使用php artisan migration迁移数据库

  16. 16

    在生产laravel网站上运行php artisan:clear命令可以吗?

  17. 17

    针对包含主键和外键的迁移文件运行“ php artisan migration”时出现语法错误或访问冲突错误

  18. 18

    运行php artisan时将表从laravel应用迁移到localhost数据库的问题

  19. 19

    PHP Artisan Migration无法正常工作

  20. 20

    如何在我的虚拟机中运行php artisan迁移

  21. 21

    我可以运行例如 artisan 命令而不必键入 php

  22. 22

    如何在远程服务器上执行“ php artisan migration”和其他Laravel命令?

  23. 23

    如何在远程服务器上执行“ php artisan migration”和其他Laravel命令?

  24. 24

    在 php artisan make:auth 之后,Laravel 在 php artisan 迁移上失败

  25. 25

    自动运行php artisan ide:models

  26. 26

    自动运行php artisan ide:models

  27. 27

    Laravel Artisan迁移错误:“ zsh:非法硬件指令php artisan迁移”

  28. 28

    PHP artisan迁移未创建新表

  29. 29

    我的php artisan迁移发生了什么

热门标签

归档