Я думаю, что вы должны сохранять только одно отношение в вашей модели событий, например:
public function user()
{
return $this->belongsTo(User::class);
}
И ваша пользовательская модель выглядит так:
public function events()
{
return $this->belongsToMany(Event::class);
}
И у вас может быть третья модельс именем Subscription
и затем создайте таблицу отношений между событиями и пользователями
public function up()
{
Schema::create('subscriptions', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('user_id');
$table->unsignedInteger('event_id');
$table->timestamps();
$table->foreign('user_id')
->references('id')->on('users')
->onDelete('cascade');
$table->foreign('event_id')
->references('id')->on('events')
->onDelete('cascade');
});
}
И, наконец, модель подписки:
public function users()
{
return $this->belongsToMany(User::class);
}
public function event()
{
return $this->belongsTo(Event::class);
}
Таким образом, вы сможете получить доступ ко всем пользователям, которые присоединились к вашему событиюс таким запросом:
$joinedUsers = Subscription::where('event_id','=','$id')->pluck('user_id');