shiftonelabs/laravel-nomad

为 Laravel 迁移添加额外功能。

2.0.0 2020-01-15 18:51 UTC

This package is auto-updated.

Last update: 2024-09-16 05:04:27 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

这个 Laravel/Lumen 包为 Illuminate 数据库迁移提供了额外功能。目前唯一的额外功能是可以指定自定义数据库字段类型,但可以根据需求添加新功能。

支持的版本

4.1, 4.2, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 6.x

本包已在 Laravel 4.1 至 Laravel 6.x 上进行了测试,尽管它可能在发布的新版本上继续工作。本节将更新以反映实际测试的版本。

安装

通过 Composer

$ composer require shiftonelabs/laravel-nomad

一旦更新了 composer 并安装了包,就需要加载服务提供者。

Laravel 5.5+, 6.x (5.5, 5.6, 5.7, 5.8, 6.x)

本包使用自动包发现。服务提供者将自动注册。

Laravel 5.0 - 5.4 (5.0, 5.1, 5.2, 5.3, 5.4)

对于 Laravel 5.0 - 5.4,打开 config/app.php 并在 providers 数组中添加以下行

ShiftOneLabs\LaravelNomad\LaravelNomadServiceProvider::class,

Laravel 4 (4.1, 4.2)

对于 Laravel 4,打开 app/config/app.php 并在 providers 数组中添加以下行

'ShiftOneLabs\LaravelNomad\LaravelNomadServiceProvider',

Lumen 5.0+, 6.x (5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 6.x)

对于 Lumen 5.0+, 6.x,打开 bootstrap/app.php 并在“注册服务提供者”部分下添加以下行

$app->register(ShiftOneLabs\LaravelNomad\LaravelNomadServiceProvider::class);

使用方法

自定义字段类型

Laravel 的迁移提供了一组广泛的标准字段类型,用于支持的数据库,但这并不是一个详尽的列表。此外,某些数据库有可启用的扩展,可以添加新的字段类型。不幸的是,无法使用内置迁移方法创建具有这些新数据类型的字段。

例如,PostgreSQL 有一个“citext”模块,允许轻松进行不区分大小写的匹配。此模块添加了一个新的“citext”字段数据类型,用于存储不区分大小写的字符串数据。内置迁移方法没有创建“citext”字段的方法,因此需要在表创建后添加直接“ALTER”语句。

此包添加了一个新的 passthru 方法,允许在迁移中定义自定义数据类型。passthru 方法可用于添加任何数据类型的字段,因为指定的类型仅传递给模式语法。

passthru 方法需要两个参数:数据类型和字段名。如果需要,可以使用可选的第三个参数指定实际的数据类型定义。也可以将 definition 方法链接到指定实际数据类型定义。以下是一个使用示例

class CreateUsersTable extends Migration {
    public function up()
    {
        Schema::create('users', function(Blueprint $table)
        {
            $table->increments('id');
            $table->passthru('citext', 'name');
            $table->passthru('citext', 'title')->nullable();
            $table->passthru('string', 'email', 'varchar(255)')->unique();
            $table->passthru('string', 'password')->definition('varchar(60)');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::drop('users');
    }
}

更新日志

本包维护一个更新日志。请参阅 CHANGELOG 了解详细信息。

贡献

欢迎贡献。请参阅 CONTRIBUTING 了解详细信息。

安全性

如果您发现任何安全问题,请通过电子邮件 patrick@shiftonelabs.com 联系,而不是使用问题跟踪器。

致谢

许可证

MIT许可(MIT)。请参阅许可文件获取更多信息。