如何使 laravel Blueprints morphs 方法在指定列之后添加列

How to make laravel Blueprints morphs method to add column after a specified column

在创建迁移脚本时,我可以这样做

Schema::table('books', function(Blueprint $table)
        {
            $table->string('reference')->after('access');
        });

这将在访问列之后创建我的引用列。但是如果我想使用 morph 我该怎么做。我正在考虑这样做

Schema::table('books', function(Blueprint $table)
        {

            $table->morphs('reference')->after('access');
        });

但是,当我尝试 运行 迁移时,这给了我一个迁移错误。这是因为 morphs 没有 after 方法。我正在使用 laravel 5.1。我不确定访问后如何获得参考列。任何帮助或建议都会很棒。谢谢

$table->morphs() 只是一个快捷方式。这是它背后的功能 (Laravel 5.5):

/**
 * Add the proper columns for a polymorphic table.
 *
 * @param  string  $name
 * @param  string|null  $indexName
 * @return void
 */
public function morphs($name, $indexName = null)
{
    $this->unsignedInteger("{$name}_id");

    $this->string("{$name}_type");

    $this->index(["{$name}_id", "{$name}_type"], $indexName);
}

所以这具有相同的效果:

Schema::table('books', function (Blueprint $table) {
    $table->unsignedInteger("reference_id")->after('access');
    $table->string("reference_type")->after('reference_id');
    $table->index(["reference_id", "reference_type"]);
});