У меня есть 4 таблицы, подобные следующей:
users
- id
- name
- others
organizations
- id
- others
events
- id
- organization_id
- title
- others
participatings (intermediate table for table organizations and events)
- user_id
- event_id
Таким образом, пользователь может зарегистрироваться на некоторые события, а событие может иметь несколько пользователей. Организация может создать несколько событий. Когда пользователь входит в систему, он может видеть некоторые события, которые он зарегистрировал.
TheProblem:
Я хочу написать запрос, используя eloquent (предпочтительно) или построитель запросов в Laravel, чтобы получить события, которые зарегистрировал пользователь. так что каждый пользователь может регистрироваться на некоторые события и видеть события, которые он зарегистрировал на одной странице. до сих пор я написал сырой sql. Я считаю, что это должно быть так (еще не попробовал):
select events.*, organizations.id, organizations.name from events join organizations on events.organization_id = organization.id where events.id in (select event_id from participatings where user_id = 1)
Моя цель: я хочу получить события, которые зарегистрирован зарегистрированный пользователь. данные будут самим событием и организацией, которая его проводит.
Моя модель выглядит так:
Event.php
----------------------
class Event extends Model{
public function organization(){
return $this->belongsTo('App\Organization');
}
public function users(){
return $this->belongsToMany('App\User', 'participatings');
}
}
User.php
--------------------
class User extends Authenticatable{
use Notifiable;
public function events(){
return $this->belongsToMany('App\Event', 'participatings');
}
}
Organization.php
----------------------
class Organization extends Authenticatable{
use Notifiable;
public function events(){
return $this->hasMany('App\Event');
}
}