Пользовательский столбец Laravel в операторе выбора - PullRequest
1 голос
/ 18 октября 2019

У меня есть поля ' questions_count ' и ' case_study_count ', полученные в результате отношения withCount . Теперь я хотел бы суммировать эти значения в операторе выбора.

postCount = questions_count + case_study_count

Это мой код

public function getTopTags() {
    return $this->tag
                ->select('id','title')
                ->withCount(['questions' => function($qry) {
                    if(\Auth::user()->role->role_code == config('constants.ROLES.USER.STUDENT')) {
                            $qry->whereIn('category_id', config('constants.STUDENT_VIEW_CATEGORIES'));
                        }   else {
                            $qry->whereNotIn('category_id', config('constants.STUDENT_ADD_CATEGORIES'));
                        }
                    $qry->where('is_active', 'Y');
                }])
                ->withCount(['case_study' => function($qry) {
                    if(\Auth::user()->role->role_code == config('constants.ROLES.USER.STUDENT')) {
                            $qry->whereIn('category_id', config('constants.STUDENT_VIEW_CATEGORIES'));
                        }   else {
                            $qry->whereNotIn('category_id', config('constants.STUDENT_ADD_CATEGORIES'));
                        }
                    $qry->where('is_active', 'Y');
                }])
                // ->select('(questions_count + case_study_count) as postCount')
                //->selectRaw('questions_count + case_study_count')

                ->orderByRaw('(questions_count + case_study_count) desc')
                ->where('is_active', 'Y')
                ->get();
}

Итак, после вызова этой функции она должна вернуть

  1. id
  2. title
  3. postCount

1 Ответ

0 голосов
/ 18 октября 2019

Одним из способов является удаление «orderbyraw» и в интерфейсе создайте столбец с нужной суммой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...