【发布时间】:2020-03-15 19:51:48
【问题描述】:
我正在尝试通过发送一组用户 ID 将用户列表附加到事件中,我在 Laravel 中有以下表结构。
事件(表格)
Schema::create('events', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->string('slug');
$table->timestamps();
});
Schema::table('events', function($table) {
$table->foreign('organiser_id')->references('id')->on('tutors')->onDelete('cascade');
$table->foreign('category_id')->references('id')->on('event_categories')->onDelete('cascade');
$table->foreign('city_id')->references('id')->on('cities')->onDelete('cascade');
});
活动用户(表格)
Schema::create('event_user', function (Blueprint $table) {
$table->increments('id');
$table->integer('event_id')->nullable()->unsigned();
$table->integer('user_id')->nullable()->unsigned();
$table->boolean('is_speaker');
$table->timestamps();
});
Schema::table('event_user', function($table) {
$table->foreign('event_id')->references('id')->on('events')->onDelete('cascade')->onUpdate('cascade');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade');
});
事件控制器(存储方法)
$events = new Events;
$events->organiser_id = $request->user()->id;
$events->save();
$speakers = User::find($request->user()->id);
$speakers->events()->detach();
$speakers->events()->attach($request->speakers_list, ['is_speaker' => true]);
事件(模型)
public function users(){
return $this->belongsToMany(User::class, 'users');
}
用户(模型)
public function events(){
return $this->belongsToMany(Events::class, 'event_user', 'event_id', 'user_id')->withTimestamps();
}
当我尝试将用户附加到事件中时,我收到以下错误
消息:“SQLSTATE[23000]:违反完整性约束:
1452 无法添加或更新子行:外键约束失败 (
acp_db.event_user, CONSTRAINTevent_user_event_id_foreignFOREIGN KEY (event_id) REFERENCESevents(id) ON DELETE CASCADE ON更新级联)(SQL: 插入
event_user(created_at,event_id,is_speaker,updated_at,user_id) 值 (2020-03-15 19:49:49, 11, 1, 2020 -03-15 19:49:49, 12), (2020-03-15 19:49:49, 11, 1, 2020-03-15 19:49:49, 13))"
【问题讨论】:
标签: php laravel eloquent eloquent-relationship