Laravel Nova 多态多对多关系不起作用
Laravel Nova Polymorphic many-to-many relationship is not working
我正在使用 Laravel Nova 开发 Laravel 管理仪表板。我在使用多态多对多关系时遇到问题。以下是我的场景。
我有用户 table 使用此定义
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
class SportSociety extends Model
{
public function users()
{
return $this->morphToMany(User::class, 'involvable', 'involvables', 'involvable_id','user_id');
}
}
这是 DancerSociety 模型 class
class DancerSociety extends Model
{
public function users()
{
return $this->morphToMany(User::class, 'involvable', 'involvables', 'involvable_id','user_id');
}
}
然后我创建了一个迁移来创建枢轴table。这是迁移文件的定义。
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 UI 中,当我将 SportSociety 或 DancerSociety 附加到用户时,我收到以下错误消息。
Field involvable_type does not have a default value. (SQL: insert into involvables (user_id, involvable_id) values (1, 5))
我的多态关系有什么问题?或者 Nova 是否存在多态关系问题?
Field involvable_type does not have a default value. (SQL: insert into involvables (user_id, involvable_id) values (1, 5))
这个错误意味着在数据库中这个字段没有default value
('', NULL, whataver you need), 你只需将它设置为可为空或传递一个值。
问题是我没有为 Nova 使用正确的磁场。在 Nova 中,我使用的是 BelongsToMany. Instead of that, I needed to use MorphToMany。
我正在使用 Laravel Nova 开发 Laravel 管理仪表板。我在使用多态多对多关系时遇到问题。以下是我的场景。
我有用户 table 使用此定义
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
class SportSociety extends Model
{
public function users()
{
return $this->morphToMany(User::class, 'involvable', 'involvables', 'involvable_id','user_id');
}
}
这是 DancerSociety 模型 class
class DancerSociety extends Model
{
public function users()
{
return $this->morphToMany(User::class, 'involvable', 'involvables', 'involvable_id','user_id');
}
}
然后我创建了一个迁移来创建枢轴table。这是迁移文件的定义。
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 UI 中,当我将 SportSociety 或 DancerSociety 附加到用户时,我收到以下错误消息。
Field involvable_type does not have a default value. (SQL: insert into involvables (user_id, involvable_id) values (1, 5))
我的多态关系有什么问题?或者 Nova 是否存在多态关系问题?
Field involvable_type does not have a default value. (SQL: insert into involvables (user_id, involvable_id) values (1, 5))
这个错误意味着在数据库中这个字段没有default value
('', NULL, whataver you need), 你只需将它设置为可为空或传递一个值。
问题是我没有为 Nova 使用正确的磁场。在 Nova 中,我使用的是 BelongsToMany. Instead of that, I needed to use MorphToMany。