为啥 php artisan 使用 empty up 方法创建迁移类?

Posted

技术标签:

【中文标题】为啥 php artisan 使用 empty up 方法创建迁移类?【英文标题】:Why does php artisan create migration class with empty up method?为什么 php artisan 使用 empty up 方法创建迁移类? 【发布时间】:2019-12-20 20:28:55 【问题描述】:

我目前正在从这个视频中学习

https://laracasts.com/series/laravel-from-scratch-2018/episodes/7

关于 laravel 中的数据库迁移。 我输入了控制台:

php artisan make:migration create_projects_table

就像视频中的老师一样,不知怎的,我在迁移文件夹中得到了一个空的方法定义。

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

class CreateProjectsTable extends Migration


    public function up()
    
        //should contain Schema::create but it is empty
    


    public function down()
    

    

我做错了什么?我按照视频中的所有说明进行操作。

【问题讨论】:

为什么要创造一些东西? laravel 如何知道你想对迁移做什么?这是正确的行为。 你使用的是什么版本的 Laravel? 我在 laravel 5.5 中使用过这个命令,它可以工作,你的 laravel 版本是多少? @kerbholz 我确信这是正确的行为。至少在 laravel 5.2 中 @kerbholz 你确定不用--create--table 参数让laravel为你写代码吗? 【参考方案1】:

你can specify the table:

php artisan make:migration create_projects_table --create=projects

edit:它确实应该在不添加参数的情况下工作: https://github.com/laravel/framework/blob/854e6d1d001f5e9a6d1376d2284eaa99b0c1e443/src/Illuminate/Database/Console/Migrations/MigrateMakeCommand.php#L88

        // Next, we will attempt to guess the table name if this the migration has
        // "create" in the name. This will allow us to provide a convenient way
        // of creating migrations that create new tables for the application.
        if (! $table) 
            [$table, $create] = TableGuesser::guess($name);
        

The tableGuesser class

在这里你可以看到你的表名应该匹配(\w+)模式

【讨论】:

通常命令应该可以在不添加 --create=projects 的情况下工作 @SagarGautam 嗯嗯,也许他应该让调试器找出原因,然后针对他的具体情况 我在几个小时前创建了一个迁移,但没有提到 --create=table_name 效果很好;) 是的,它现在可以工作。谢谢。可能视频有点老了。【参考方案2】:

在根文件夹上使用此命令

php artisan make:migration create_projects_table --create=projects //create only Migration file

php artisan make:model Project -m //Create Migration, Model file

php artisan make:model Project -mcr //For Create Migration,Model,Controller file

【讨论】:

是的,显然视频中的老师使用了不同版本的 laravel。如果您阅读文档,您将看到与您相同的语法。 是的,你的问题--create=projects 丢失了,php artisan make:migration create_projects_table 它只会创建迁移文件。

以上是关于为啥 php artisan 使用 empty up 方法创建迁移类?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能使用 PHP artisan serve 运行我的 laravel 应用程序?

为啥作曲家更新后php artisan命令不起作用

为啥 PHP artisan migrate 命令显示错误?

为啥 php artisan 啥都不迁移?

为啥“php artisan serve”关闭端口? (也不住8000)

为啥我收到 Laravel php artisan 迁移错误?