为啥 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 migrate 命令显示错误?