У меня есть модель events
, где я храню информацию о событиях. Каждое событие принадлежит одному group
. users
группы событий имеют возможность ответить, присутствуют ли они на мероприятии или нет. Эта информация сохраняется в отдельной таблице event_replies
.
Теперь с простыми отношениями я могу получить все ответы о событии:
public function replies()
{
return $this->hasMany('App\Models\EventReply','event_id','id');
}
или я могу получить всех пользователей группы
public function users()
{
return $this->hasMany('App\Models\User','group_id','group_id');
}
Но загрузка ответы не загружают всех пользователей, которые не ответили.
То, что я хочу, это: отношение должно возвращать ВСЕХ пользователей группы. Если они ответили, значение должно возвращаться, если нет: значение должно быть нулевым.
Можно ли объединить / отобразить отношение пользователей с отношением ответы?
Спасибо!
РЕДАКТИРОВАТЬ
Вот пример того, как должен выглядеть результат JSON:
[
{
"id":1,
"group":1,
"name":"Event 1",
"replies":[
{
"name":"user 1",
"reply":1 // replied
},
{
"name":"user 2",
"reply":0 // replied
},
{
"name":"user 3",
"reply":null // NO reply in event_replies
},
{
"name":"user 4",
"reply":1 // replied
}
]
}
]
РЕДАКТИРОВАТЬ 2
Events
-Таблица:
id: int
name: String
group_id: int
Users
-Таблица:
id: int
name: String
group_id: int
event_replies
-Таблица:
event_id: int
user_id: int
Как я уже говорил: моя цель - провести мероприятие со всеми пользователями, входящими в группу -> user.group_id = event.group_id
. Если они ответили, ответ должен быть в объекте пользователя. Если нет - объект Reply внутри объекта user должен быть нулевым.
При обычном запросе SQL я присоединяюсь ко всем пользователям и оставляю присоединиться к ответам.