У меня есть события и участники. Участники, которые представлены в виде профилей, могут участвовать в мероприятиях. У меня есть сводная таблица с именем event_participants
.
Отношение в профиле
public function events()
{
return $this->belongsToMany('App\Event', 'event_participants', 'event_id', 'profile_id')->withTimestamps();
}
Отношение в событии
public function participants()
{
return $this->belongsToMany('App\Profile', 'event_participants', 'event_id', 'profile_id')->withTimestamps();
}
Я хочу связать участников с их уважающими событиями, получив событие, а затем прикрепив профиль
$event->participants()->attach($profile['id']);
Я могу получить список участников мероприятия, сделав это
$event->participants
Но моя проблема в том, что, когда я пытаюсь получить события профиля, который участвует в событиях, делая это
$profile->events
Я всегда получаю нулевую / пустую коллекцию. Я что-то упускаю? Благодарю.
Обновление: моя миграция для сводной таблицы выглядит следующим образом
Schema::create('event_participants', function (Blueprint $table) {
$table->integer('profile_id')->unsigned()->index();
$table->foreign('profile_id')->references('id')->on('profiles')->onDelete('cascade');
$table->integer('event_id')->unsigned()->index();
$table->foreign('event_id')->references('id')->on('events')->onDelete('cascade');
$table->timestamps();
});
Также, если я попытаюсь прикрепить события к профилям, например $profile->events()->attach($eventId);
Я получаю следующую ошибку:
"SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`database`.`event_participants`, CONSTRAINT `event_participants_profile_id_foreign` FOREIGN KEY (`profile_id`) REFERENCES `profiles` (`id`) ON DELETE CASCADE) (SQL: insert into `event_participants` (`created_at`, `event_id`, `profile_id`, `updated_at`) values (2019-03-16 07:33:03, 1, 17, 2019-03-16 07:33:03))"