laravel массив внутри результатов запроса - PullRequest
1 голос
/ 11 марта 2020

У меня есть запрос данных, некоторые из которых должны быть массивом, но я не знаю, как получить эти массивы внутри моего запроса.

Снимок экрана

one

У меня есть 2 students в 2 semester и 4 different classes, что я пытаюсь добиться, чтобы получить каждого студента semester and classes в массиве.

Так что у меня были бы такие результаты, как этот :

two

код

$students = DB::table('schools')
            ->where('schools.id', $id)
            ->join('school_semesters', 'school_semesters.school_id', '=', 'schools.id')
            ->join('semester_classes', 'semester_classes.semester_id', '=', 'school_semesters.id')
            ->join('class_students', 'class_students.class_id', '=', 'semester_classes.id')
            ->join('users', 'users.id', '=', 'class_students.user_id')
            ->select(
                'school_semesters.name as semester',
                'semester_classes.name as class',
                'users.name as students',
                'users.id as id'
            )
            ->groupBy('users.id') // return results as screenshot #2
            ->get();

Есть идеи?

Обновление

ожидаемый результат будет примерно таким:

semester: ["Winter semester", "Our Spring semester"]
class: ["A1", "B1"]
students: "Student Two"
id: 5
DT_RowId: 5

, поэтому semester и class будут массивом.

1 Ответ

1 голос
/ 11 марта 2020

Вы делаете группу по user.id. с помощью группы concat вы получите ожидаемый результат.

->select(
    \DB::raw('group_concat(DISTINCT school_semesters.name) as semester'),        
    \DB::raw('group_concat(DISTINCT semester_classes.name) as class'),
    'users.name as students',
    'users.id as id'
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...