stidges/laravel-fk-migration

这是一个非常有用的基础迁移,用于创建所有外键而无需担心迁移的顺序。

1.1.0 2014-06-25 14:31 UTC

This package is auto-updated.

Last update: 2024-08-29 04:19:48 UTC


README

Latest Stable Version Total Downloads Build Status License

Laravel包提供了一种基础迁移,您可以扩展它以轻松创建所有外键。如果您曾经遇到过由于外键约束失败而需要重新组织所有迁移的问题,那么这个包就是为您准备的!

入门指南

您可以通过Composer安装此包,只需将其添加到您的composer.json文件中

{
    "require": {
        "stidges/laravel-fk-migration": "1.*"
    }
}

在您将其添加到composer.json文件后,请确保更新您的依赖项

composer update

基本用法

要开始使用,请在您的app/database/migrations/目录中创建一个新类。如果您想确保此迁移最后执行,您可以将其命名为类似于9999_99_99_999999_create_foreign_keys.php(这可能是有点过度,但您应该明白其意图)。

接下来,将以下内容添加到您刚才创建的空类中

<?php

use Stidges\LaravelFkMigration\Migration;

class CreateForeignKeys extends Migration {

    /**
     * The foreign keys to create or drop.
     *
     * @var array
     */
    protected $keys = [];

}

$keys数组中,您可以定义您的外键。它应该是一个关联数组,其中键是表名,值是外键(列表)。以下列出了可以为外键指定的选项。

注意:您至少应指定每个外键的column属性。如果您忘记指定此属性,将会抛出异常。

基本示例

以下是一个基本示例供您参考。

<?php

use Stidges\LaravelFkMigration\Migration;

class CreateForeignKeys extends Migration {

    protected $keys = [
        'posts'    => [ 'column' => 'category_id' ],
        'post_tag' => [
            [ 'column' => 'post_id', 'onDelete' => 'cascade' ],
            [ 'column' => 'tag_id' ],
        ],
    ];
    
}

扩展示例

在内部,迁移将调用一个名为getKeys()的方法,默认返回指定的$keys数组。如果您希望在外键定义时具有更大的灵活性,您可以覆盖此方法。例如,如果您有很多表引用users表,您可以这样做

<?php

use Stidges\LaravelFkMigration\Migration;

class CreateForeignKeys extends Migration {

    protected $keys = [];
    
    protected $presets = [
        'user' => [ 'column' => 'user_id' ],
    ];
    
    public function getKeys()
    {
        $keys = [
            'posts'      => [ $this->presets['user'] ],
            'tags'       => [ $this->presets['user'] ],
            'categories' => [ $this->presets['user'] ],
        ];
        
        return $keys;
    }
}

这样,您就不必一次次地复制相同的外键引用了!

贡献

欢迎所有建议和拉取请求!如果您做出任何实质性的更改,请在您的拉取请求中提供测试!

许可

版权(c)2014 Stidges - 在MIT许可下发布。