我想将 Laravel 中已存在的 morph 字段更改为可为空。
public function up()
{
Schema::table('table', function (Blueprint $table) {
$table->nullableMorphs('cartable')->change();
});
}
public function down()
{
Schema::table('table', function (Blueprint $table) {
$table->morphs('cartable')->change();
});
}
我收到错误
Call to a member function change() on null
,有人知道如何做到这一点吗?
Laravel 的架构构建器不支持直接修改 morphs 字段。您需要手动更改构成 morphs 字段的每一列。
public function up()
{
Schema::table('table', function (Blueprint $table) {
$table->unsignedBigInteger('cartable_id')->nullable()->change();
$table->string('cartable_type')->nullable()->change();
});
}
public function down()
{
Schema::table('table', function (Blueprint $table) {
$table->unsignedBigInteger('cartable_id')->nullable(false)->change();
$table->string('cartable_type')->nullable(false)->change();
});
}
注意:变形字段通常由两列组成:ID 列和类型列。