Добрый день!
Долго использовал Laravel Eloquent ORM и уже подзабыл SQL, сейчас в силу событий требуется написать запрос на чистом SQL и с этим у меня возникла проблема.
БД используется PostgreSQL 9.5
Есть следующие таблицы:
user:
- id
- name
-------------
role
- id
- name
-------------
user_role
- id
- user_id
- role_id
-------------
Связи между таблицами соответсвенно установлены.
Требуется получить список пользователей и их ролей. То есть на выходе должно быть следующее:
[
{
id: 1,
name: "user_name_1"
roles: [
{
id: 1,
name: "role_name_1"
},
{
id: 2,
name: "role_name_2"
}
]
},
{
id: 2,
name: "user_name_2"
roles: [
{
id: 2,
name: "role_name_2"
},
{
id: 3,
name: "role_name_3"
}
]
},
]
Сейчас написал такой запрос:
SELECT user.id, user.name, array_agg(user_role.role_id) as role_id FROM user JOIN user_role ON user_role.user_id=user.id WHERE users.id IN (1,2) GROUP BY users.id
На выходе получаю следующее, что не совсем то, что нужно:
[
{
id: 1,
name: "user_name_1",
role_id: "1,2"
},
{
id: 2,
name: "user_name_2",
role_id: "2,3"
}
]
Подскажите пожалуйста как написать правильный запрос.