Я разрабатываю панель администратора Laravel, используя Laravel Nova.У меня проблема с использованием полиморфных отношений «многие ко многим».Ниже приведен мой сценарий.
У меня есть таблица пользователей с таким определением
class User extends Model
{
public function sportsocieties()
{
return $this->morphedByMany(SportSociety::class, 'involvable', 'involvables', 'user_id', 'involvable_id');
}
public function dancersocieties()
{
return $this->morphedByMany(DancerSociety::class, 'involvable', 'involvables', 'user_id', 'involvable_id');
}
}
Это класс модели SportSociety
class SportSociety extends Model
{
public function users()
{
return $this->morphToMany(User::class, 'involvable', 'involvables', 'involvable_id','user_id');
}
}
Это класс модели DancerSociety
class DancerSociety extends Model
{
public function users()
{
return $this->morphToMany(User::class, 'involvable', 'involvables', 'involvable_id','user_id');
}
}
Затем я создал миграцию для создания сводной таблицы.Это определение файла миграции.
class CreateInvolvablesTable extends Migration
{
public function up()
{
Schema::create('involvables', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->unsignedInteger("user_id");
$table->unsignedInteger("involvable_id");
$table->string("involvable_type");
});
}
public function down()
{
Schema::dropIfExists('involvables');
}
}
В пользовательском интерфейсе Nova, когда я присоединяю пользователя SportSociety или DancerSociety, я получаю следующее сообщение об ошибке.
Field involvable_type does not have a default value. (SQL: insert into involvables (user_id, involvable_id) values (1, 5))
Что не так с моими полиморфными отношениями?Или у Nova есть проблемы с полиморфными отношениями?