У меня есть таблица вопросов, в которой я использую:
$query->orderBy($request->sort_by, ($request->sort_direction === 'false') ? 'asc' : 'desc');
//sort_by and sort_direction are from front-end, and this works for my main table
Но в этой таблице у меня есть 2 отношения, и я хочу отсортировать по столбцу из таблицы, которая имеет отношение, а также к отсортировать по их количеству.
Пример: у вопроса много answer_history, у каждой answer_history есть столбец answer_type («нет» или «пропущено»). Я хочу отсортировать по количеству (answer_type = 'none').
$query = Question::select(['id', 'free_text', 'title', 'best_match', 'created_at']);
$query->with('answer_history');
$query->with(['bestMatch']);
$query->orderBy($request->sort_by, ($request->sort_direction === 'false') ? 'asc' : 'desc');
return response()->json($query->paginate($request->per_page));
//this works just for main table
ОБНОВЛЕНИЕ:
if($request->sort_by){
if($request->sort_by === 'best_match'){
$query->orderBy(function ($bestMatch, $key) {
return count($bestMatch['name']);
},($request->sort_direction === 'false') ? 'asc' : 'desc');
}else{
$query->orderBy($request->sort_by, ($request->sort_direction === 'false') ? 'asc' : 'desc');
}
}
// I tried to do this for a column from best_match, but is not working