对创建和运行Laravel迁移的质疑
我已经阅读了文档,但是我仍然对创建迁移有一些疑问。在我的项目中,我运行了对创建和运行Laravel迁移的质疑,laravel,migration,Laravel,Migration,我已经阅读了文档,但是我仍然对创建迁移有一些疑问。在我的项目中,我运行了migrate命令来创建Laravel的默认表(用户、密码重置和迁移)。现在,我想一个接一个地为我在EER图上计划的其余表创建迁移。我的疑问如下: 我可以使用php artisan make:migration create_new_table创建一个新的迁移,并使用--create=tablename补码创建一个新表 --create=tablename是否会立即在DB上创建一个空表 既然我已经有三个表了,我应该为每个新
migrate
命令来创建Laravel的默认表(用户、密码重置和迁移)。现在,我想一个接一个地为我在EER图上计划的其余表创建迁移。我的疑问如下:
我可以使用php artisan make:migration create_new_table
创建一个新的迁移,并使用--create=tablename
补码创建一个新表
是否会立即在DB上创建一个空表李>--create=tablename
- 既然我已经有三个表了,我应该为每个新表使用
--create=tablename
- 写入所有代码后,
命令将运行我的所有迁移。在为所有表编写迁移之后,是否使用此命令?再次运行它会覆盖数据库中已有的表吗migrate
migrate
将每个迁移文件的名称保存在migrations
表中,并为其分配一个batch
id。每个后续的migrate
命令将检查表中是否存在所有文件名,如果它们不存在,将在运行所述文件中定义的迁移之前将其添加到当前批中php artisan migrate
时将创建表。它将为tablename
创建一个带有“样板文件”的新迁移。在这种情况下,这将添加到迁移文件中:
Schema::create('tablename', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
});
既然我已经有三个表了,我应该为每个新表使用--create=tablename吗
它实际上只是样板文件的一个辅助方法。因此,如果你正在创建一个新的,它将使它更容易
就个人而言,我更喜欢使用php-artisan-make:model-m SomeModel
创建迁移,这将创建模型和样板迁移(因为-m
选项)
例如,如果运行php artisan make:model SomeModel-m
,它将a)创建一个名为SomeModel的模型b)创建一个样板迁移(称为像时间戳\u create\u someu models\u table
)并具有:
我喜欢它,因为这样很容易坚持Laravels约定(表的复数形式,模型的单数形式)
还可以使用命令将名称空间添加到模型中。例如,如果您的模型位于app/models
目录中,那么您应该改为编写php artisan make:model-m models/SomeModel
在编写所有代码之后,migrate命令将运行我的所有迁移。在为所有表编写迁移之后,是否使用此命令?再次运行它会覆盖数据库中已有的表吗
Laravel专门为记录已经运行的迁移创建一个SQL表。无论执行多少次php-artisan-migrate
,它都不会运行相同的迁移两次。除非你用命令把它们滚回去
如果一个表已经存在,它只会抛出一个SQL错误,说明无法创建表,因为它已经存在。您能谈谈您提到的make:model命令吗?我的下一步是为我已有的表和新表创建模型。另外,谢谢你的回答!我已经对我的答案进行了编辑,添加了一些解释。我建议你试试命令,自己看看。如果不运行
php artisan migrate
,只需删除由命令创建的文件,数据库中的任何内容都不会更改。
Schema::create('some_models', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
});