Я разработал таблицу многие ко многим ниже:
activity
----------
id
name
activity_student
----------
id
activity_id
student_id
student
----------
id
name
Каждый учащийся может участвовать во многих мероприятиях, и в каждом мероприятии может быть много участников.
И я хочу выбрать из активности, и в то же время я хочу собрать участников как массив.
Окончательные данные, которые я хочу сделать, выглядят так:
[
id => 1,
name => football club activity,
participants =>
[
[
id => 1,
name => example student,
class => 3
],
[
id => 3,
name => example student2,
class => 5
]
]
]
Я попытался выбрать activity.* и group_concat для student_id. А затем я получил данные студента, используя оператор foreach.
Но я думаю, что это не лучшая практика, так как время запроса стало больше 10 секунд с более чем 10 000 строк.
Какова наилучшая практика?
- Я использую базу данных CI4, mysql с движком InnoDB.