8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

一般如何忽略外键迁移?

Dan Choi 2月前

26 0

我对 Laravel 中的迁移有疑问。是否可以使用简单的 if 语句处理外键?具体来说,我想确保如果外键已经存在,则不应

我对 Laravel 中的迁移有疑问。是否可以使用简单的 if 语句处理外键?具体来说,我想确保如果外键已经存在,则不应再次迁移。有没有直接的方法可以做到这一点?

例如,这是我的代码。

        if (Schema::connection('orders_import')->hasTable('mymuesli_label')) {
            Schema::connection('orders_import')->table('mymuesli_label', function (Blueprint $table) {
                $table->foreign(['roll'], 'roll_id')->references(['id'])->on('mymuesli_roll');
            });
        }

        if (Schema::connection('orders_import')->hasTable('parameter_mapping')) {
            Schema::connection('orders_import')->table('parameter_mapping', function (Blueprint $table) {
                $table->foreign(['customer'], 'parameter_mapping_fk_customer')->references(['id_customer'])->on('customer');
            });
        }

        if (Schema::connection('orders_import')->hasTable('product_mapping')) {
            Schema::connection('orders_import')->table('product_mapping', function (Blueprint $table) {
                $table->foreign(['customer'], 'product_mapping_fk_customer')->references(['id_customer'])->on('customer');
            });
        }
帖子版权声明 1、本帖标题:一般如何忽略外键迁移?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Dan Choi在本站《postgresql》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 我相信是的,但是使用 laravel 11。使用 Schema::getForeignKeys('your_table') 。我将为您的第一个代码举一个例子:

    use Illuminate\Support\Facades\Schema;
    
    $foreignKeys = Schema::connection('orders_import')->getForeignKeys('mymuesli_label');
    $foreignKeyExists = false;
    
    foreach ($foreignKeys as $foreignKey) {
        if ($foreignKey['name'] === 'roll_id') {
            $foreignKeyExists = true;
            break;
        }
    }
    
    if (!$foreignKeyExists) {
        Schema::connection('orders_import')->table('mymuesli_label', function (Blueprint $table) {
            $table->foreign(['roll'], 'roll_id')->references(['id'])->on('mymuesli_roll');
        });
    }
    
    // Then set the $foreignKeyExists to false and keep with the search on your tables.
    

    (字符串)和 name 的数组数组 columns ,您需要通过迁移来正确获取它 ->foreign($columns, $name) .

  • 抱歉,我可能忘了提到可能有大约 700 个实例可能发生此问题。我使用此包 github.com/kitloong/laravel-migrations-generator 为一个非常大的项目生成了新的迁移。在本地主机上,不幸的是,外键可能已经存在,但外键可能会出现问题。我需要一个解决方案,可以使用 if 语句处理整个代码块,而无需单独列出外键,但我不确定这是否可行。@francisco

返回
作者最近主题: