Решить задачу сортировки вывода данных на основании JSON объекта. В MySQL есть таблица course_student, в которой хранится прогресс прохождения студентом материала по изучаемому курсу. Структуру таблицы определяет следующая миграция Schema::create('course_student', function (Blueprint $table) { $table->primary(['course_id', 'user_id']); $table->char('user_id'); $table->char('course_id'); $table->timestamp('lesson_timestamp')->nullable(); $table->text('course_progress')->nullable(); $table->foreign('user_id')->references('id')->on('users'); $table->foreign('course_id')->references('id')->on('courses'); $table->timestamps(); }); В поле course_progress по ходу обучения записывается объект в виде { “6e980e75-72a6-4260-bbe6-7a764b4e7ce7“ : { “tools“ : 5, “exam“ : 15, “intro“ : 5, “dictionary“ : 5, “class“ : 35.555555555555557, “practice“: 30 }, “9827d702-c1a1-4fcc-a134-69385ccb7dde“ : { “intro“ : 5, “class“ : 13, “exam“ : 15 }, “87fd10e3-8140-448e-bf35-64097eb8be48“ : { “tools“ : 5, “exam“ : 15, “intro“ : 5, “dictionary“ : 5, “class“ : 40 }, “52700dd0-caaa-48e7-86f8-d50389fb915f“ : { “tools“ : 5, “exam“ : 15, “intro“ : 5, “dictionary“ : 5, “class“ : 40 }, “daae12a4-b1ac-4138-bbf3-423c3148fc57“ : { “tools“ : 5, “exam“ : 15, “intro“ : 5, “dictionary“ : 5, “class“ : 0 } } Необходимо осуществить сортировку вывода пользователей на основании минимального/максимального количества одного из трех (по выбору) условий: class >=35 exam>=15 practice>=30 Обращение к базе данных происходит с бэка написанного на PHP. Сортировка по полю lesson_timestamp работает. Интересует аналогичное решение для условий, перечисленных выше public function getUsers() { return $users = User::query() ->select('users.id', 'users.email', 'users.lastSeen', 'users.totalTime', 'users.retention') ->orderBy(CourseStudent::select('lesson_timestamp') ->whereColumn('user_id', 'users.id') ->orderByRaw('lesson_timestamp is null') ->oldest() ->take(1)); ->get(); }. Что нужно ещё: Решить кейс.