Laravel Nova Полиморфные отношения «многие ко многим» не работают - PullRequest
0 голосов
/ 14 сентября 2018

Я разрабатываю панель администратора 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 есть проблемы с полиморфными отношениями?

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Проблема заключалась в том, что я не использовал правильное поле для Nova. В Nova я использовал BelongsToMany . Вместо этого мне нужно было использовать MorphToMany .

0 голосов
/ 14 сентября 2018
Field involvable_type does not have a default value. (SQL: insert into involvables (user_id, involvable_id) values (1, 5))

Эта ошибка означает, что в базе данных это поле не имеет default value ('', NULL, что вам нужно), вы просто должны установить его в значение NULL или передать значение,

...