Php 如何在lumen/laravel中正确使用迁移?

Php 如何在lumen/laravel中正确使用迁移?,php,laravel,lumen,Php,Laravel,Lumen,我想在一个表上创建几个带有FK的表。 处理迁移中up方法上的表创建失败的外部约束 我应该使用这样的代码吗 public function up() { Schema::create('Pharmacy', function (Blueprint $table) { $table->increments('id'); $table->string("name"); }); if (Schema::hasTable('Drug')

我想在一个表上创建几个带有FK的表。 处理迁移中
up
方法上的表创建失败的外部约束

我应该使用这样的代码吗

public function up()
{
    Schema::create('Pharmacy', function (Blueprint $table) {
        $table->increments('id');
        $table->string("name");
    });

    if (Schema::hasTable('Drug')) {
        Schema::table('Drug', function (Blueprint $table) {
            $table->foreign('pharmacy_id')->references('id')->on('Pharmacy');
        });
    }

    if (Schema::hasTable('Address')) {
        Schema::table('Address', function (Blueprint $table) {
            $table->foreign('pharmacy_id')->references('id')->on('Pharmacy');
        });
    }


}
还是创建新的迁移


我应该在每个表和外键上使用新的迁移,一次迁移用于创建所有表,另一次迁移用于添加FKs吗?

我个人不会用if(Schema::has…)这样做,因为如果一次迁移失败,我看不到进一步执行迁移的好处,但您的场景可能会有所不同。谢谢回复,那么仅仅创建新的迁移就可以了?基本上是在第一次迁移中创建带列的表,然后创建另一个迁移来添加FK?两者都应该可以,这只是您喜欢代码的问题。就个人而言,我不会用if(Schema::has…)这样做,因为如果迁移失败,我看不到进一步执行迁移的好处,但您的场景可能会有所不同。谢谢您的回复,所以创建新的迁移就可以了吗?基本上是在第一次迁移中创建带有列的表,然后创建另一个迁移来添加FK?这两种方法都应该有效,这只是您喜欢代码的问题。