Я пытаюсь прикрепить список пользователей к событиям, отправив массив идентификаторов пользователей, у меня есть следующая структура таблицы в 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
, CONSTRAINT event_user_event_id_foreign
ИНОСТРАННЫЙ КЛЮЧ (event_id
) ССЫЛКИ events
(id
) НА УДАЛИТЬ КАСКАД НА ОБНОВЛЕНИЕ КАСКАД)
(SQL: вставить в event_user
(* Значения 1042 *, 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)) "